android - onclick 在 android 的自定义 AlertDialog 中不起作用
问题描述
嗨,在下面的代码中,onclick for save 如果它是空的,应该显示一些错误,否则应该进入下一步。但它不起作用。在 frgament 内部我正在调用 openDiag() 方法。
谁能帮我
public class HomeNurseFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_coordinatorhome, container, false);
openDialog(rootView);
public void openDialog(View view) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
// alertDialogBuilder.setTitle("Select Hospital and Proceed");
final View customLayout
= getLayoutInflater()
.inflate(
R.layout.popup_hospitallist,
null);
alertDialogBuilder.setView(customLayout);
Button save = customLayout.findViewById(R.id.proceed);
TextView cancel = customLayout.findViewById(R.id.cancel);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(hospital.getItemAtPosition(0).equals("Preferred hospital")){
hospital.setError("Please select Preferred hospital ");
}else {
alertDialogBuilder.setCancelable(true);
}
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialogBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
dialog.dismiss();
}
});
}
});
// AlertDialog alertDialog = alertDialogBuilder.create();
alertDialogBuilder.show();
}
}
}
解决方案
如果要显示错误消息而不是关闭 AlertDialog,则必须禁用 clickListener 并设置自定义的。
public void openDialog(View view) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
// alertDialogBuilder.setTitle("Select Hospital and Proceed");
final View customLayout = getLayoutInflater().inflate(R.layout.popup_hospitallist, null);
alertDialogBuilder.setView(customLayout);
alertDialogBuilder.setPositiveButton("Save", null); // set listener to null as you will override it later
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
// Overriding the Positive button here
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(hospital.getItemAtPosition(0).equals("Preferred hospital")){
hospital.setError("Please select Preferred hospital ");
} else {
alertDialogBuilder.setCancelable(true);
}
}
});
推荐阅读
- spring-boot - 使用 JSON 输入的 Spring webflux 多部分文件上传
- reactive - R2dbc 来自关系数据库的实时更新
- flutter - 从 Assetsimage 在圆形头像中添加背景图像时出错?如何修复它
- postgresql - 如何解决错误,使用 postgis 添加新的数据存储
- php - 无法单击开始侦听 PhpStorm 中的调试图标
- reactjs - ReactNode、ReactElement、JSX.Element 有什么区别?
- operating-system - 具有无限 RAM 的虚拟内存
- asp.net - 有没有办法列出服务器上所有活动的 .aspx 链接?
- scala - 具有多列的 Pivot Dataframe - Spark/Scala
- ethercat - 我们能否通过自定义以太网交换机中继 Ethercat 协议帧(满足延迟和抖动预期)