微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

onclick 在 android 中的自定义 AlertDialog 中不起作用

如何解决onclick 在 android 中的自定义 AlertDialog 中不起作用

嗨,在下面的代码中,如果为空,则单击保存时应显示一些错误,否则应移至下一步。但它不起作用。在 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);
          }
      }
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。