java 如何在 Android 中的 Fragment 中创建是/否警报对话框

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25670051/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 08:26:06  来源:igfitidea点击:

How to create Yes/NO Alert Dialog in Fragment in Android

javaandroidandroid-fragmentsdialog

提问by Mohammad Farahi

This is my codes that I commented what I need. I tries some codes but it seems not compatible with Fragment.

这是我的代码,我评论了我需要的东西。我尝试了一些代码,但它似乎与 Fragment 不兼容。

public class main extends Fragment {

    ImageButton imagebutton;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.main, container, false);

        imagebutton = (ImageButton) rootView.findViewById(R.id.im);

        imagebutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //Open Yes/No Dialog

                //if Yes do something
            }
        });

    }
}

回答by huertazx

Try this method:

试试这个方法:

   private void createAndShowAlertDialog() {
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     builder.setTitle("My Title");
     builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
              //TODO
              dialog.dismiss();
         }
     });
     builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
              //TODO
              dialog.dismiss();
         }
     });
     AlertDialog dialog = builder.create();
     dialog.show();
   }

回答by Sagar Pilkhwal

class MyDialogFragment extends DialogFragment{
    Context mContext;
public MyDialogFragment() {
    mContext = getActivity();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext);
    alertDialogBuilder.setTitle("Really?");
    alertDialogBuilder.setMessage("Are you sure?");
    alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(getApplicationContext(), "CLick-Click!!",Toast.LENGTH_LONG).show();
        }
    });

    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

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


    return alertDialogBuilder.create();
}
}

To create the dialog call:

创建对话调用:

new MyDialogFragment().show(getFragmentManager(), "MyDialog");

new MyDialogFragment().show(getFragmentManager(), "MyDialog");

And to dismiss the dialog from somewhere: ((MyDialogFragment)getFragmentManager().findFragmentByTag("MyDialog")).getDialog().dismiss();

并从某处关闭对话框: ((MyDialogFragment)getFragmentManager().findFragmentByTag("MyDialog")).getDialog().dismiss();


OR
Try using this snippet:



尝试使用此代码段:

AlertDialog.Builder mDialog = new AlertDialog.Builder(MyClassNane.this);
mDialog.setTitle("Title");
mDialog.setMessage("Do you want to delete ?");
mDialog.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                    Toast.makeText(getApplicationContext(),
                    "Click-Click!!",Toast.LENGTH_LONG).show();
                }
                dialog.cancel();
            }
        });

mDialog.setNegativeButton("No",
        new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog,
                    int which) {
                dialog.cancel();
            }
        });
AlertDialog alert = mDialog.create();
alert.show();