您可以使用它EventBus https://github.com/greenrobot/EventBus
在 Dialog 类的 onClick 中发布一个事件,告知对话框已被单击。该事件可能包含一个字符串变量,告诉您单击了哪个对话框。
在您的 Activity 中订阅并处理事件。您可以检查字符串变量值以了解单击了哪个对话框。
修改您的 Dialogs 类,如下所示:
public class Dialogs{
public void testCompletionDialog() {
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setContentView(R.layout.test_complete_dialog);
dialog.setTitle("Ratta provet?");
dialog.findViewById(R.id.lesson_btn_marker).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post("btn_marker");
dialog.dismiss();
}
});
dialog.findViewById(R.id.lesson_btn_ratta).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post("btn_ratta");
}
});
dialog.show();
在您的活动中:
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(String action){
if(action.equals("btn_ratta")){
} else if(action.equals("btn_marker")) {
}
}
在 onCreate 里面添加这个-
EventBus.getDefault().register(this);
在 onDestroy 里面添加这个 -
EventBus.getDefault().unregister(this);
替代方法:
好吧,除了接口和 EventBus 之外,您还可以向 Activity 添加一个公共方法,例如:
onDialogClicked(String dialogName){//TODO handle the click as per dialogName}
然后从 Dialogs 类中的 onClick 调用此方法。