2013-03-25 73 views
1

我有一個android應用程序,我想輸入密碼,如果它是正確的,那麼去新的活動。爲此,我表現出與一個EditText field.If定製對話框密碼是正確的,那麼隱藏kayboard並進入下一activity.I二手下面的代碼隱藏鍵盤當軟鍵盤可見時,背景圖像顯示黑底欄

alertBuilder.setNeutralButton("OK", 
     new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
     new Thread(new Runnable() { 
     @Override 
     public void run() { 
       //start new acivity for result 
     } 
     }).start(); 

    } 
}); 

和負載使用startActivityForResult(意向下一個活動, requestCode)加載下一actvity,隱藏鍵盤背景圖像後之前在dialog.But的OK按鈕的一個的onClick線程內示出了黑色底杆等this

當回此活動的背景圖像顯示像這樣片刻。 我試過intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);並在清單文件中爲此活動設置android:windowSoftInputMode =「adjustPan」。它不適合我。這裏有什麼問題,以及如何解決這個問題?

由於提前

回答

0

關閉鍵盤之後,等待一小的延遲與可運行給你活動的背景片刻重繪。使用Handler等待較小的延遲並返回到UI線程。

添加到您的類

private Handler mHandler = new Handler(); 

定義一個Runnable

private Runnable mRunnable = new Runnable() { 
    public void run() { 
     startActivityForResult(intent, resultCode); 
    } 
}; 

更新你的代碼

alertBuilder.setNeutralButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); 
     inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 

     // Wait a moment and jump to the next activity. 
     mHandler.postDelayed(mRunnable, 500); 
    } 
}); 
+0

它不工作 – 2013-03-25 07:12:35

+0

查看具有實際延遲的更新處理程序是否適合您。 – 2013-03-25 07:26:49

+0

準確地說,我不想在那裏延遲。因爲這個,我使用了一個線程來開始新的活動 – 2013-03-25 07:29:55

相關問題