gpt4 book ai didi

java - 是否可以对 AlertDialog 和 View 使用相同的 onClick?

转载 作者:行者123 更新时间:2023-12-01 10:30:49 25 4
gpt4 key购买 nike

我的 Activity 有一个接受按钮,它通过 onClickOkayButton 方法将 Intent 发送给父级。我重写了 onBackPressed() 方法,以便它显示一个 AlertDialog,询问用户是否真的想离开或者是否想保存首选项,女巫会执行与接受按钮完全相同的操作。

是否可以将两个 onClick 方法合并为一个,以便在编辑其中一个方法时不需要复制/粘贴,即使两种方法使用不同的参数?

public void onClickOkayButton(View view) {

// THIS IS THE ACCEPT BUTTON
EditText editText = (EditText)findViewById(R.id.surveyadd_name_edittext);
String title = editText.getText().toString();
if (!(title.matches("")) || !(title.isEmpty()) || !(title.equals("")) ) {
Intent intent = new Intent();
intent.putExtra("title", title);
setResult(RESULT_OK, intent);
finish();
} else {
Toast.makeText(this, R.string.surveyadd_warn_notitle, Toast.LENGTH_SHORT).show();
}
}

@Override
public void onBackPressed() {
if (adapter.getCount() != 0) {
showAlertDialog();
} else {
super.onBackPressed();
}
}

public void showAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(R.string.surveyadd_warn_back_message);
builder.setNegativeButton(R.string.surveyadd_warn_back_save, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

// THIS WAS COPIED FROM THE ACCEPT BUTTON
EditText editText = (EditText)findViewById(R.id.surveyadd_name_edittext);
String title = editText.getText().toString();
if (!(title.matches("")) || !(title.isEmpty()) || !(title.equals("")) ) {
Intent intent = new Intent();
intent.putExtra("title", title);
setResult(RESULT_OK, intent);
finish();
} else {
Toast.makeText(context, R.string.surveyadd_warn_notitle, Toast.LENGTH_SHORT).show();
}
}
});
// UP TO HERE

builder.setPositiveButton(R.string.surveyadd_warn_back_erase, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
finish();
}
});

AlertDialog alertDialog = builder.create();
alertDialog.show();
}

最佳答案

您将无法使用相同的回调方法,因为它们来自不同的接口(interface)。

您应该做的是将所有通用代码移至第三个方法中,然后从两个点击处理程序中调用它,如下所示:

private void setResultAndFinish() {
EditText editText = (EditText)findViewById(R.id.surveyadd_name_edittext);
String title = editText.getText().toString();
if (!TextUtils.isEmpty(title)) ) {
Intent intent = new Intent();
intent.putExtra("title", title);
setResult(RESULT_OK, intent);
finish();
} else {
Toast.makeText(context, R.string.surveyadd_warn_notitle, Toast.LENGTH_SHORT).show();
}
}

然后是处理程序:

public void onClickOkayButton(View view) {
setResultAndFinish();
}

@Override
public void onClick(DialogInterface dialog, int which) {
setResultAndFinish();
}

关于java - 是否可以对 AlertDialog 和 View 使用相同的 onClick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com