Android 关闭对话框后运行函数
我有一个自定义对话框,我以以下方式显示该对话框:Android 关闭对话框后运行函数,android,android-dialog,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 = findVi
@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();仅在用户按下对话框上的“确定”按钮后运行。我该怎么做呢
此外,如果用户只按了“确定”,而没有按“取消”,我将如何运行它?在其中使用refreshRecyclerView方法创建一个runnable:
Runnable r = new Runnable() {
@Override
public void run() {
refreshRecyclerView();
}
}
然后为该runnable创建一个处理程序:
Handler handler = new Handler();
在onClickListener中,ok按钮通过调用以下命令触发runnable:
handler.post(r);
为什么不在自定义对话框中添加一个侦听器呢
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之后,您将在这里找到答案,这里有一些用于对话框的事件侦听器。请参见:OK按钮和Cancel按钮使用相同的onClickListener和开关/案例来检查按钮。如果他们按cancel,是否有办法取消runnable?您可以使用以下处理程序取消它;此外,onClickListener在一个类中,而refreshRecyclerView在一个单独的活动中-我如何调用此函数,因为它是公共的?抱歉,如果这是一个愚蠢的问题,我相当不熟悉,我必须查看您的代码才能确定,但一般来说,您可以将一个方法设置为public static,并且在要使用它的活动中,创建包含它的类的一个对象,并像使用object.nameOfMethod()一样使用它;另一种方法是使用接口并将其作为回调方法。如果你有问题,试着提出一个新的问题,这样更多的人可以看到细节,因为当前的线索是不相关的