关闭对话框后运行功能

时间:2018-12-03 15:53:42

标签: android android-dialog

我有一个自定义对话框,该对话框以以下方式显示:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.dict_add_word_dialog_box);
    ok = findViewById(R.id.dictDialog_confirmButton);
    cancel = (Button) findViewById(R.id.dictDialog_cancelButton);
    ok.setOnClickListener(this);
    cancel.setOnClickListener(this);
}

通过以下方式点击“浮动操作按钮”时显示:

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DictCustomDialogBoxClass customDialog = new DictCustomDialogBoxClass(DictionaryActivity.this);
            customDialog.show();
            refreshRecyclerView();
        }
    });

我想要refreshRecyclerView();仅在用户按下对话框上的“确定”按钮后运行。我将如何去做?

此外,仅当用户按下“确定”而不是“取消”时,我将如何运行它?

2 个答案:

答案 0 :(得分:1)

使用其中的refreshRecyclerView方法创建可运行对象:

Runnable r = new Runnable() {
        @Override
        public void run() {
            refreshRecyclerView();
        }
    }

然后为该可运行对象创建一个处理程序:

Handler handler = new Handler();

在onClickListener内的“确定”按钮通过调用以下命令触发可运行对象:

handler.post(r);

答案 1 :(得分:0)

为什么不将侦听器添加到自定义对话框?

var listener: Listener

public interface Listener {
    void onPositiveActionPressed();
}

然后在自定义对话框的ok.onClickListener中,显示以下内容;

if(listener != null) {
    listener.onPositiveActionPressed();
}

最后;

DictCustomDialogBoxClass customDialog = new DictCustomDialogBoxClass(DictionaryActivity.this)
customDialog.listener = self

当然已经实现了DictCustomDialogBoxClass.Listener