2017-03-07 130 views
0

我想在activity on create()方法上顯示popup方法,但似乎沒有任何事情發生..否exceptionpopup顯示彈出活動創建失敗

以下是代碼

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    btnClear = (Button)findViewById(R.id.btnClear); 
    txtPassword = (TextView) findViewById(R.id.txtPassword); 
    txtPassword.setOnTouchListener(otl); 
    btnClear.setVisibility(View.GONE); 
    objDBHelper = DBHelper.getInstance(getApplicationContext()); 
    SQLiteDatabase db = objDBHelper.getWritableDatabase(); 
    long driverProfileCount = objDBHelper.getProfilesCount(db); 

     initiatePasswordPopupWindow(); // show pop up when no data is in table 

} 

private void initiatePasswordPopupWindow() { 
    try { 
     //We need to get the instance of the LayoutInflater, use the context of this activity 
     LayoutInflater inflater = (LayoutInflater) Login.this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     //Inflate the view from a predefined XML layout 
     final View layout = inflater.inflate(R.layout.setting_password_popup, 
       (ViewGroup) findViewById(R.id.setting_password_popup_element)); 
     // create a 300px width and 470px height PopupWindow 
     pw = new PopupWindow(layout, 600, 720, true); 
     // display the popup in the center 
     layout.post(new Runnable() { 
      public void run() { 
       pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 
       Button cancelButton = (Button) layout.findViewById(R.id.end_data_send_button); 
       cancelButton.setOnClickListener(cancel_button_click_listener); 
      } 
     }); 

     /* TextView mResultText = (TextView) layout.findViewById(R.id.server_status_text);*/ 


    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

我缺少什麼?

+0

你肯定driverProfileCount其實equalt爲0? – StarterPack

+0

你確定'driverProfileCount == 0'? –

+0

顯示完整的代碼,因爲我們不能告訴'driverProfileCount'爲零 –

回答

1

您嘗試使用post與視圖(PopupWindow佈局)不啓動它的消息隊列。嘗試使用視圖中已有的活動,例如根視圖 - 改變layout.post(new Runnable() {findViewById(android.R.id.content)

findViewById(android.R.id.content).post(new Runnable() { 
    public void run() { 
     pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 

     Button cancelButton = (Button) layout.findViewById(R.id.end_data_send_button); 
     cancelButton.setOnClickListener(cancel_button_click_listener); 
    } 
}); 
+0

此解決方案工作...謝謝! –