我有一个Android应用程序,我想在其中输入密码,如果它是正确的,那么转到新的活动。为此,我展示了一个带有EditText字段的自定义对话框。如果密码正确,则隐藏kayboard并转到下一个活动。我使用以下代码隐藏键盘
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();
}
});
在对话框的onClick按钮上使用 startActivityForResult(intent,requestCode)加载下一个活动。但是在加载下一个活动之前,隐藏键盘背景图像后显示黑色底栏比如
返回此活动时,背景图像会暂时显示。 我尝试 intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 并在清单文件中为此活动设置 android:windowSoftInputMode =“adjustPan”。它对我不起作用。这里有什么问题以及如何解决这个问题?
先谢谢
答案 0 :(得分:0)
关闭键盘后,请等待一段带有runnable的延迟,以便为您的活动背景留出一些时间进行重新绘制。
使用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);
}
});