2013-08-16 66 views
1

我已決定將所有對話放在Notify類中。從另一個類調用AlertDialog

然而,當我嘗試調用一個對話框,應用程序崩潰

這是通知類:

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 notify = new Notify(); 

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

你有沒有想過這個?我遇到了同樣的事情。 –

回答

0

android.app.AlertDialog.Builder.Builder(上下文上下文),所以你需要傳遞這個或ApplicationContext就像eH()方法,

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

爲什麼你創建一個活動並調用它的公共方法?什麼意思,我不知道。

0

在初始化messageBox變量時,您在您的alertDialog方法中忘記了.create()。這可能會導致應用程序崩潰。 你應該通過上下文AlertDialog.BuildermessageBox = new AlertDialog.Builder(getApplicationContext());messageBox = new AlertDialog.Builder(this);

+0

我嘗試通過上下文以及:messageBox = new AlertDialog.Builder(getApplicationContext())。create();但我仍然崩潰 –

+0

@LouisEvans:你有沒有在清單文件中將Notify類定義爲活動?只是檢查,因爲有些時候許多人忘記在清單文件中添加活動。 –

+0

我沒有,但我現在,它仍然無法工作 –