当软键盘可见时,背景图像显示黑底栏

问题描述:

我有一个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”。它不适合我。这里有什么问题,以及如何解决这个问题?

由于提前

关闭键盘之后,等待一小的延迟与可运行给你活动的背景片刻重绘。使用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