如何在常用工具中使用带有按钮的静态对话框



我对某些活动使用自定义对话框。我在 CommonUtils 中创建 showDialog 方法并从 BaseActivity 调用。但是Choices的onClick方法必须在viewmodel中设置。我不能选择其他类的onClick方法。如何在CommonUtils中使用对话框选项? CommonUtils:

public final class CommonUtils extends AppCompatDialogFragment {
private CommonUtils() {
}
public static boolean showDialog(Context context){
final boolean[] result = new boolean[1];
PrettyDialog prettyDialog = new PrettyDialog(context);
prettyDialog.setMessage("Seçiminiz:");
prettyDialog.setIcon(R.drawable.question_icon);
prettyDialog.addButton("EVET", R.color.pdlg_color_white, R.color.pdlg_color_green, new PrettyDialogCallback() {
@Override
public void onClick() {
result[0] = true;
prettyDialog.dismiss();
}
});
prettyDialog.addButton("HAYIR", R.color.pdlg_color_white, R.color.pdlg_color_red, new PrettyDialogCallback() {
@Override
public void onClick() {
result[0] = false;
prettyDialog.dismiss();
}
});
prettyDialog.show();
return result[0];
}
}

在 BaseActivity 中调用方法:

@Override
public boolean getDialogResult() {
return CommonUtils.showDialog(this);
}

视图模型:

public class DialogViewModel extends BaseViewModel<BaseNavigator> {
@Inject
public DialogViewModel(){
}
public void onDialogButtonClick(View view){
boolean result= getNavigator().getDialogResult();
if (result==true){
getNavigator().hideLoading();
getNavigator().showLoading();
}
}
public boolean testDialogResult(){
return getNavigator().getDialogResult();
}
}

我尝试从公共属性中提取结果值。但是"onDialogButtonClick"仅使用打开对话框,而不使用"是"或"否"操作。 结果值无法拉取。

请尝试这个 只需向对话框按钮添加一个侦听器即可单击处理 即喜欢

public interface ClickHandlerListener {
/**
* will work for positive(ok/yes) click
*/
void onPositiveClick();
/**
* will work for negative(no/cancel) click
*/
void onNegativeClick();
}

现在将此侦听器设置为您的对话方法,例如


public static boolean showDialog(Context context){
final boolean[] result = new boolean[1];
PrettyDialog prettyDialog = new PrettyDialog(context);
prettyDialog.setMessage("Seçiminiz:");
prettyDialog.setIcon(R.drawable.question_icon);
prettyDialog.addButton("EVET", R.color.pdlg_color_white, R.color.pdlg_color_green, new PrettyDialogCallback() {
@Override
public void onClick() {
if (clickHandler != null) clickHandler.onPositiveClick();
result[0] = true;
prettyDialog.dismiss();
}
});
prettyDialog.addButton("HAYIR", R.color.pdlg_color_white, R.color.pdlg_color_red, new PrettyDialogCallback() {
@Override
public void onClick() {
if (clickHandler != null) clickHandler.onNegativeClick();
result[0] = false;
prettyDialog.dismiss();
}
});
prettyDialog.show();
return result[0];
}
}

并创建 on 方法以将对话的回调设置为调用对话的活动性或碎片

public void setDialogClick(ClickHandlerListener click) {
clickHandler = click;
} 

现在调用以将侦听器回调设置为活动/片段,即

setdialogClick(this);

并确保您的活动或片段实现了侦听器以传递此方法,否则您也可以匿名实现侦听器方法。

最新更新