Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从非活动类调用对话框?_Java_Android - Fatal编程技术网

Java 从非活动类调用对话框?

Java 从非活动类调用对话框?,java,android,Java,Android,我正试图从另一个类调用dialog,就像这样 public void alertbox() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Blah").setCancelable(false); setNeutralButton("Ok", new DialogInterface.OnClickListener() { p

我正试图从另一个类调用dialog,就像这样

public void alertbox() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);    
    builder.setMessage("Blah").setCancelable(false);
    setNeutralButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        }); 
    AlertDialog alert = builder.create(); alert.show();
}
我正在从我的类调用此方法,但我的应用程序崩溃,有人能告诉我原因吗?

使用此表单:

new AlertDialog.Builder(this)
.setTitle("MessageDemo")
.setMessage("eek!")
.setNeutralButton("Close", new DialogInterface.OnClickListener()
{
 public void onClick(DialogInterface dlg, int sumthin)
 {
  // do nothing – it will close on its own
 }
})
.show();
也是:

作为在onCreateView中提供视图的替代方法,您可以替代 onCreateDialog并提供一个对话框实例。下面的代码为 这是一种方法

下面是代码。重写DialogFragment的onCreateDialog

MyDialogFragment
 {
    .....other functions
   @Override
   public Dialog onCreateDialog(Bundle icicle)
    {
       AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
      .setTitle("My Dialog Title")
      .setPositiveButton("Ok", this)
      .setNegativeButton("Cancel", this)
      .setMessage(this.getMessage());
       return b.create();
    }
    .....other functions
 }
您需要应用程序上下文来从单独的类显示此警报对话框。有两种方法可以实现这一点

直接将上下文传递给alertboxcontext方法

创建一个单参数构造函数并在其上传递上下文

下面我看到了第二种方法,将上下文传递给单参数构造函数,如

然后,在活动中使用此AlertMessages类,如下所示:


您需要应用程序上下文来显示此警报对话框。将上下文传递给您的AlertBoxContext,但我想调用AlertMessages msg=new AlertMessagesyouractivity.this;msg.alertbox;从非活动类中,它不是working@AliJafar这是不可能的。您必须具有显示警报对话框的应用程序上下文。因此,没有其他方法可以从非活动类显示对话框?@AliJafar否。我已经告诉过您必须具有显示警报对话框的应用程序上下文。因此,我可以在此处使用FragmentDialog吗?如果是,那么我如何使用它呢?这是没有帮助的,我仍然无法从非活动类调用dialog
public class AlertMessages {
    Context context;

    public AlertMessages(Context con) {
        this.context=con;
    }

    public void alertbox() {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);            
        builder.setMessage("Blah")
                .setCancelable(false)
                .setNeutralButton("Ok", new DialogInterface.OnClickListener() { 
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    }); 
        AlertDialog alert = builder.create(); 
        alert.show();
    } 
}
AlertMessages msg = new AlertMessages(youractivity.this);
msg.alertbox();