从另一个类调用AlertDialog

时间:2013-08-16 08:42:58

标签: java android android-alertdialog

我决定将所有对话框放在Notify类中。

但是,当我尝试调用对话框时,应用程序崩溃

这是Notify类:

public class Notify extends Activity
{


public void  errorHandler(String title, Exception e)
{
    eH(title, e);
}

public void  messageBox(String title, String details)
{
    alertDialog(title, details);
}

    //***************************************************************
//display error dialog.
//****************************************************************
private void eH(String method, Exception e)
{
    Log.e("FIRSTDROID EXCEPTION", method + " : " + e.getMessage());

    e.printStackTrace();

    AlertDialog alertDialog;
    alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle(method);
    alertDialog.setMessage(e.getMessage());
    alertDialog.setIcon(R.drawable.quiticon);
    alertDialog.setCanceledOnTouchOutside(true);
    alertDialog.show();
}


//*************************************************************
//generic dialog for messages to the user
//*************************************************************
private void alertDialog(String title, String message)
{       
    Log.i("Message", message);

    AlertDialog.Builder messageBox;
    messageBox = new AlertDialog.Builder(null);
    messageBox.setTitle(title);
    messageBox.setMessage(message);
    messageBox.setIcon(R.drawable.infoicon);
    messageBox.setNeutralButton("OK", null);
    messageBox.setCancelable(false);
    messageBox.show();
}

我创建一个新的Notify实例,并调用messageBox,如下所示:

Notify notify = new Notify();

notify.messageBox("Test Title", "Test Message");

2 个答案:

答案 0 :(得分:0)

android.app.AlertDialog.Builder.Builder(Context context),所以你需要像eH()方法那样传递this或ApplicationContext,

alertDialog = new AlertDialog.Builder(this).create();

另一方面,为什么你要创建一个活动并调用它的公共方法?这是什么意思,我不知道它。

答案 1 :(得分:0)

在初始化messageBox变量时,您在alertDialog方法中忘记了 .create()。这可能会导致应用程序崩溃。 您应该在 AlertDialog.Builder 中传递上下文,例如 messageBox = new AlertDialog.Builder(getApplicationContext()); messageBox = new AlertDialog.Builder(this)