【问题标题】:How to create Yes/NO Alert Dialog in Fragment in Android如何在 Android 的 Fragment 中创建是/否警报对话框
【发布时间】:2014-09-04 16:00:24
【问题描述】:

这是我评论了我需要的代码。我尝试了一些代码,但似乎与 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
            }
        });

    }
}

【问题讨论】:

    标签: java android android-fragments dialog


    【解决方案1】:

    试试这个方法:

       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();
       }
    

    【讨论】:

    • 我也在使用片段。我将该方法添加到我的片段类中,并在需要确认用户何时删除项目时调用它。
    • 答案中没有图像按钮。客户想要一个图像按钮。我找不到“setPositiveImageButton”,并且出于某种原因,onClick 方法在片段中的工作方式与活动完全不同。
    【解决方案2】:
    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();
    }
    }
    

    创建对话调用:

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

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


    或者
    尝试使用这个 sn-p:

    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();
    

    【讨论】:

    • 我以前看过这个答案,但我不知道如何在我的代码中使用它?
    • 我编辑了我的代码?有帮助吗?接受答案是这样的。
    • @MohammadFarahi 试试 Sagar 发布的内容。 “要创建对话框...”
    • @MohammadFarahi 你的应用怎么说?它为什么会崩溃输出什么?
    • 当我添加 new MyDialogFragment().show(getFragmentManager(), "MyDialog");在我的点击
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2018-01-23
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多