Java 从非活动类调用对话框?
我正试图从另一个类调用dialog,就像这样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
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();