【问题标题】:Run a function after dialog box is closed对话框关闭后运行函数
【发布时间】:2018-12-04 00:10:39
【问题描述】:

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

 @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();仅在用户按下对话框上的 OK 按钮后运行。我该怎么做呢?

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

【问题讨论】:

标签: android android-dialog


【解决方案1】:

使用您的 refreshRecyclerView 方法创建一个可运行对象:

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

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

Handler handler = new Handler();

在您的 onClickListener 中,通过调用以下 ok 按钮触发 runnable:

handler.post(r);

【讨论】:

  • OK 按钮和 Cancel 按钮使用相同的 onClickListener 和一个 switch/case 来检查按钮。如果他们按取消,有没有办法取消可运行?
  • 可以使用下面的 handler.removeCallbacks(r); 取消它;
  • 另外,onClickListener 在一个类中,而 refreshRecyclerView 在一个单独的活动中 - 我如何调用这个函数,因为它是公共的?对不起,如果这是一个愚蠢的问题,我很陌生
  • 我必须查看您的代码才能确定,但​​通常,您可以将方法设为公共静态,并在您想要使用它的活动中创建一个包含该类的对象它,并像这样使用它 object.nameOfMethod();另一种方法是使用接口并将其作为回调方法。如果您遇到问题,请尝试创建一个新问题,以便更多人可以看到具体细节,因为当前线程无关
【解决方案2】:

为什么不在您的自定义对话框中添加一个监听器?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 2011-07-02
    • 2013-01-04
    相关资源
    最近更新 更多