0

我的應用程序只是在它試圖運行alertdialog時崩潰。我不確定正確的做法,但我正在做的是創建一個名爲'AboutActivity'的Java類,它包含方法'popup()',理想地創建AlertDialog。在我的主要活動中,我正在創建對象並調用方法。AlertDialog崩潰應用程序

'彈出()' 中AboutActivity:

public class AboutActivity extends DialogFragment 
{ 
    public void popup() 
    { 
     new AlertDialog.Builder(getActivity()) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("About Us") 
       .setMessage("Blah Blah Blah") 
       .setCancelable(true) 
       .setPositiveButton("Ok", null) 
       .show(); 
    } 
} 

主要活動:

public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()){ 
      case R.id.nav_About:{ 
       AboutActivity about = new AboutActivity(); 
       about.popup(); 
      } 
} 
+0

你的應用程序崩潰,所以共享logcat –

+0

另外'AboutActivity'實際上是一個片段,所以請嘗試按照命名約定 –

+0

我在哪裏可以找到logcat。 –

回答

0

發送logcat的,但我想這是因爲你的getActivity()爲null。如果你想在你的方法中使用它,只需在那裏傳遞你的活動。

'彈出()' 中AboutActivity:

public class AboutActivity extends DialogFragment { 
    public void popup(Activity activity) { 
    new AlertDialog.Builder(activity) 
    .setIcon(android.R.drawable.ic_dialog_alert) 
    .setTitle("About Us") 
    .setMessage("Blah Blah Blah") 
    .setCancelable(true) 
    .setPositiveButton("Ok", null) 
    .show(); 
    } 
} 

主要活動:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.nav_About:{ 
     AboutActivity about = new AboutActivity(); 
     about.popup(this); 
    } 
} 
+0

這對我工作感謝,但在你的'主要活動'版本'這'應該在'about.popup()' –

+0

是,你是對的,它應該通過那裏,編輯它。 – Kia

0

主要活動:

只需創建有對話框...有沒有一個片段只是爲了加載

new AlertDialog.Builder(MainActivity.this) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .setTitle("About Us") 
      .setMessage("Blah Blah Blah") 
      .setCancelable(true) 
      .setPositiveButton("Ok", null) 
      .show(); 

您的問題是getActivity()是未分配一個全新的,獨立的片段

+0

我的老師特意問:「用AboutActivity實現對話框 –

+0

但是」AboutActivity 「不是一個活動,所以我認爲你可能跟着其他一些指示錯誤 –

0

首先與此更換你的警告對話框代碼:

new AlertDialog.Builder(AboutActivity.this) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .setTitle("About Us") 
      .setMessage("Blah Blah Blah") 
      .setCancelable(true) 
      .setPositiveButton("Ok", null) 
      .show(); 

這總是工作對我而言,我認爲你的問題可能是你正在使用getActivity()這可能不是上下文,所以使用AboutActivity.this就像我在上面的例子中所做的那樣。

其次,如果我是正確的,您正試圖從MainActivity轉到AboutActivity,所以您需要使用意圖。

替換此:

AboutActivity about = new AboutActivity(); 
about.popup(); 

與此:

Intent intent = new Intent(getApplicationContext(), AboutActivity.class); 
startActivity(intent); 

如果您更換這兩個代碼,你應該是好去!

希望這會有所幫助!