2011-10-13 53 views
0

我正在開發一個Android應用程序,此應用程序有十幾個活動,每個活動都用於相應的屏幕。現在我在屏幕頂部有這個共同的字幕欄。 這個字幕欄有一個按鈕,顯示一個警告對話框,顯示鏈接列表以轉到不同的屏幕。將此傳遞給外部類,並從Android的alertdialog列表中啓動活動

我可以寫一個相同的功能,每次活動都打電話警告對話框中,但是這將是乏味的,如果我要修改它們,所以我創建這個類:

public class MenuAlertDialog extends Activity { 

/* 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
} 
*/ 
public void createMenu(final Context context){ 
    AlertDialog.Builder dlg = new AlertDialog.Builder(context); 
    dlg.setTitle("menu"); 

    String[] items = {"pageA", "pageB", "pageC", "pageD", "pageE"}; 
    dlg.setItems(items, new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int which){ 
      switch(which){ 
      case 0: 
       Intent intent = new Intent(context, MainActivity.class); 
       startActivity(intent); 
       break; 
      default: 
       break; 

      } 
     } 
    }); 
    dlg.show(); 
} 
} 

,並從每個活動叫它,像這樣:

MenuAlertDialog menu = new MenuAlertDialog(); 
menu.createMenu(this); 

from onCreate內部。

它可以顯示alertDialog,但是無論何時按下pageA鏈接,它都會失敗並出現意外錯誤。

logcat的說,它的一個nullpointererror和原因似乎

startActivity(intent); 

我在做什麼錯?

+0

意向意圖=新意圖(背景下,MainActivity.class)更換;在上面的代碼上下文中的 是空的,這是原因。 –

+0

嗯,與你的問題無關,但你爲什麼要將你的課程擴展爲活動?如果你在上面發佈的內容是該類中的所有內容,那麼使用任何東西來擴展該類是完全多餘的。 – dymmeh

+0

Android_Crazy感謝您的快速響應!你能否告訴我我該如何解決?請。 – Kou

回答

1

刪除代碼

extends Activity 

當你調用startActivity(intent);

context.startActivity(intent); 
+0

謝謝!你解決了我的問題! – Kou

1

您應該將類​​更改爲「擴展對話框」而不是「活動」。 也試試這個:

查看本教程如何創建自定義對話框。 Custom Dialog ,你有沒有需要擴展類正在創建因爲它不依賴於任何活動相關的功能也在這裏Another TutorialHere

+0

也嘗試從(最終上下文上下文) –

+0

謝謝你的建議Coder_For_Life22,但它仍然給我錯誤...我試圖將超類從活動更改爲對話框,但如果我這樣做,startActivity將無法正常工作。 .. – Kou

+0

看看我的編輯。我發佈了完整的教程,可以解決您的問題,並將您放在正確的路徑上,以創建上面需要的對話框。 –

相關問題