如何在Android中的片段中创建Yes/NO Alert对话框

3
这是我注释了所需内容的代码。尝试了一些代码,但似乎与碎片不兼容。
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
            }
        });

    }
}
2个回答

21

试试这个方法:

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

我也在使用Fragment。我将该方法添加到我的Fragment类中,并在需要确认用户是否要删除项时调用它。 - huertazx
答案中没有图像按钮。客户希望有一个图像按钮。我找不到“setPositiveImageButton”的方法,而且碎片中的onClick方法与活动中完全不同,原因不明。 - JosephK

1
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(); 或者尝试使用以下代码片段:
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();

我之前看过这个答案,但不知道如何在我的代码中使用它? - Mohammad Farahi
我已经编辑了我的代码?这有帮助吗?如果是的话,请接受答案。 - Sagar Pilkhwal
我已经添加了一些代码片段,请尝试直接在您的活动类中使用它。 - Sagar Pilkhwal
这些应该放在哪里? - Mohammad Farahi
你想在什么时候显示这个对话框?比如长按事件(onLongPress)还是点击事件(OnItemClick)? - Sagar Pilkhwal
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接