我有一个自定义对话框,该对话框以以下方式显示:
@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();仅在用户按下对话框上的“确定”按钮后运行。我将如何去做?
此外,仅当用户按下“确定”而不是“取消”时,我将如何运行它?
答案 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