2017-03-07 44 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

此解决方案工作...谢谢! –