好吧,另一個奇怪的問題。我有活動Main.java和DialogLikeActivity.java。打開/關閉軟鍵盤(Galaxy S)
在主要我
EditText (articleNumber) - phone input type (in .XML)
Button (articleOK)
list (list)
在DialogLikeActivity(活動,但有對話的主題風格和機器人:windowSoftInputMode = 「stateAlwaysVisible」在清單標籤)我有
EditText (articlePackaging) - phone input type (in .XML)
Button (finish)
我想要什麼?當我輸入主要活動鍵盤與電話輸入類型打開,這很好。當我點擊EditText字段時,填寫一些內容並點擊OK靜態變量將變爲狀態1(總是顯示鍵盤) - 它只是主活動中的靜態變量。
public static int keyboardMode = 1;
點擊OK打開鍵盤打開(電話輸入類型)的DialogLikeActivity。當我點擊確定主恢復簡歷
@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);
}
}
});
並確保鍵盤與電話輸入類型打開。如果我點擊/滾動瀏覽Main keyboardMode變量的列表變成2(總是隱藏) - 所以鍵盤隱藏(使用名爲list.onTouch監聽器的hideKeyboard方法)。如果我點擊列表中的某個項目,它會再次打開DialogLikeActivity,並打開鍵盤和手機輸入類型。如果我點擊確定onResume主鍵入並隱藏鍵盤(請參閱代碼)。
那看起來好像請看視頻(視頻中的確定按鈕是文章按鈕) - Video (3,24 MB)。
因此,實際上 - 如果我點擊OK(articleOK)按鈕 - 鍵盤總是必須證明,如果是我,不過開始滾動thorugh列表或單擊列表中的一些項目 - 鍵盤必須只有在DialogLikeActivity所示活動,否則在主要它必須保持隱藏(當然,如果我點擊頂部的EditText字段,它會再次打開)。
在視頻中可以看到HTC Desire的一切工作只是我想要的方式,而是 - 上的Galaxy S的始終顯示部分工作,但如果我點擊/滾動列表,打開它的了鍵盤與字母鍵入(!)而不是隱藏它。問題在哪裏?
所以確定按鈕 - 始終顯示鍵盤(在Main和DialogLikeActivity中)。如果只在DialogLikeActivity中點擊/滾動列表顯示鍵盤。
你在說什麼?你有什麼問題? – Falmarri 2011-01-05 18:12:57
爲什麼它在我的HTC Desire上工作,但不在Galaxy S上(它顯示鍵盤佈局中的鍵盤佈局被隱藏起來只是隱藏它)? – svenkapudija 2011-01-05 18:24:02