了解しました。別の奇妙な問題です。Main.javaとDialogLikeActivity.javaのアクティビティがあります。
メインで私は持っています
EditText (articleNumber) - phone input type (in .XML)
Button (articleOK)
list (list)
DialogLikeActivity (アクティビティですが、Dialogテーマとマニフェストのandroid:windowSoftInputMode = "stateAlwaysVisible"タグでスタイル設定されています)について
EditText (articlePackaging) - phone input type (in .XML)
Button (finish)
何が欲しい?メインアクティビティに入ると、キーボードは電話入力タイプで開いていますが、それで問題ありません。EditTextフィールドをクリックし、何かを入力して[OK]をクリックすると、静的変数が状態1になります(常にキーボードが表示されます)。これは、メインアクティビティの静的変数です。
public static int keyboardMode = 1;
[OK]をクリックすると、キーボードが開いた状態でDialogLikeActivityが開きます(電話入力タイプ)。[OK]をクリックすると、メインキックの再開が始まります
@Override
public void onResume() {
super.onResume();
if (keyboardMode == 1) {
showKeyboard(articleNumber);
} else {
hideKeyboard(articleNumber);
}
}
public static void showKeyboard(View view) {
InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
((InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, 0);
articleNumber.setInputType(InputType.TYPE_CLASS_PHONE);
}
public static void hideKeyboard(View view) {
InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
}
// Listener to showKeyboard if user clicks on EditText field and set InputType to PHONE, insted it would remain (0)
articleNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showKeyboard(articleNumber);
}
});
// Listener so when user touches the list - it hides the keyboard and sets variable on 2 so keyboard is always HIDDEN
list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
hideKeyboard(articleNumber);
keyboardMode = 2;
return false;
}
});
// Listener so when user clicks on ArticleOK - keyboard is always OPEN
articleOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
keyboardMode = 1;
Intent i = new Intent(NewOrderArticles.this, NewQuantityDialog.class);
i.putExtra("articleid", articleId);
startActivity(i);
}
}
});
また、キーボードが電話入力タイプで開いていることを確認します。メインキーボードのリストをクリック/スクロールすると、変数は2(常に非表示)になります。そのため、キーボードは非表示になります(list.onTouchリスナーと呼ばれるhideKeyboardメソッドを使用)。リスト内の項目をクリックすると、キーボードと電話の入力タイプを開いた状態でDialogLikeActivityが再び開きます。[OK]をクリックすると、メインの[再開]が開始され、キーボードが非表示になります(上のコードを参照)。
ビデオをご覧ください(ビデオの[OK]ボタンはarticleOKボタンです)-ビデオ(3,24 MB)。
したがって、実際には-OK(articleOK)ボタンをクリックした場合-キーボードは常に表示される必要がありますが、リストをスクロールし始めるか、リスト内の項目をクリックすると、キーボードはDialogLikeActivityアクティビティでのみ表示される必要があります。それ以外の場合はMainで表示される必要があります。非表示のままにします(もちろん、上部のEditTextフィールドをクリックすると、再び開きます)。
ビデオではHTCDesireを見ることができ、すべてが私が望むように機能しますが、Galaxy Sでは常に表示部分が機能していますが、リストをタップ/スクロールすると、非表示にする代わりに文字タイプ(!)でキーボードが開きますそれ。問題はどこにありますか?
したがって、[OK]ボタン-常にキーボードを表示します(MainおよびDialogLikeActivityで)。リストをタップ/スクロールすると、DialogLikeActivityでのみキーボードが表示されます。