2012-07-15 43 views
1

我一直在尋找答案,但大多數似乎指向getApplicationContext()問題,但我沒有使用getApplicationContext()。 基本上我試圖在啓動一個活動時打開一個彈出窗口,但是當活動開始時它強制關閉並出現上述錯誤。

代碼IM已經writen是:

protected void onCreate(Bundle paramBundle) { 
    super.onCreate(paramBundle); 
    setContentView(R.layout.installguides_menu); 
    setTitleFromActivityLabel(R.id.title_text); 

    btn_Back = (Button) findViewById(R.id.btn_Back); 
    btn_Back.setOnClickListener (btn_Back_onClick); 

    btn_Ubuntu10Guide = (Button) findViewById(R.id.btn_Ubuntu10Guide); 
    btn_Ubuntu12Guide = (Button) findViewById(R.id.btn_Ubuntu12Guide); 
    btn_BacktrackGuide = (Button) findViewById(R.id.btn_BacktrackGuide); 
    btn_DebianGuide  = (Button) findViewById(R.id.btn_DebianGuide); 

    btn_Ubuntu10Guide .setOnClickListener (btn_Ubuntu10Guide_onClick); 
    btn_Ubuntu12Guide .setOnClickListener (btn_Ubuntu12Guide_onClick); 
    btn_BacktrackGuide .setOnClickListener (btn_BacktrackGuide_onClick); 
    btn_DebianGuide  .setOnClickListener (btn_DebianGuide_onClick); 

    LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
    View popupView = layoutInflater.inflate(R.layout.donation_popup, null); 
      final PopupWindow popupWindow = new PopupWindow(
       popupView, 
       LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT); 

    Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss); 
    btnDismiss.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
     popupWindow.dismiss(); 
    }}); 

    popupWindow.showAsDropDown(btn_Ubuntu10Guide, 50, -30); 
} 

希望你們能幫助,尋找答案一直在找了幾個小時讓你我最後的希望!

+0

發佈logcat會更好。 – 2012-07-16 05:06:36

回答

0

我的第一個猜測是你不允許在onCreate內顯示彈出窗口。它用於初始化您的應用程序並構建您的佈局,但您迫使它顯示彈出窗口。

onStart()是一個更合適的地方來顯示它。覆蓋此功能並在那裏顯示彈出窗口。如果您更喜歡在onResume()中執行此操作,請注意,用戶不僅會在啓動應用程序時看到它,還會在導航到其他活動後再次看到該應用程序。

編輯2:試試這個創建彈出處理通信或的onCreate:使用

android:id="@+id/main_page_layout" 

 LayoutInflater inflater = (LayoutInflater) 
       this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      PopupWindow pw = new PopupWindow(
       inflater.inflate(findViewById(R.id.popup_layout), null, false), 
       100, 
       100, 
       true); 

// delaying popup until after all application initialization is done 
    findViewById(R.id.main_page_layout).post(new Runnable() { 
     public void run() { 
     pw.showAtLocation(findViewById(R.id.main_page_layout), Gravity.CENTER, 0, 0); 
     } 
    }); 

加入ID對您的活動和彈出式佈局

android:id="@+id/popup_layout" 

分別使它們與您將在第上面的代碼。

+0

剛剛嘗試過,但仍然得到相同的錯誤,所以即時猜測它有更多的事情與彈出代碼本身 – 2012-07-15 23:40:43

+0

嘗試我的編輯onStart()方法。 – Erol 2012-07-15 23:56:54

+0

好吧,即時得到一個java.lang.NullPointerException錯誤我的代碼:http://pastebin.com/ACxiEC5z和彈出的http://pastebin.com/cT5v5wsX – 2012-07-16 00:00:00

相關問題