以下の条件で1つの編集テキストを作成したい:-ユーザーは通常、このコントロールに集中できません。-ユーザーがこのコントロールをクリックすると、ソフトキーボードが表示され、ユーザーはこのコントロールに入力できます-ユーザーがこのソフトキーボードでEnterキーを押すか、デバイスに戻ると、閉じて、コントロールがフォーカスされていない通常のビューに戻ります。
以下のコードを試しましたが、機能しません:(起動時にコントロールがフォーカスされていません:ok
コントロールをクリックすると、最初のクリックでコントロールはフォーカスされますが、ソフトキーボードは表示されません
2回目のクリックで、ソフトキーボードを表示します
- ソフトキーボードのEnterボタンを押したとき:コントロールがフォーカスされていない画面に戻る:OK
戻るボタンデバイスを押しても、コントロール付きの画面に戻るにはまだフォーカスがあります:OKではありません
public void onCreate(Bundle savedInstanceState) { final EditText txtSearch = (EditText)this.findViewById(R.id.p60004_txt_search_str); txtSearch.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub txtSearch.setFocusable(true);//(false); txtSearch.setFocusableInTouchMode(true); txtSearch.requestFocus(); } }); txtSearch.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { String strSearch = txtSearch.getText().toString(); if (strSearch != null && strSearch != ""){ searchFriend(UserAPIConstants.FRIEND_SEARCH_TYPE_SC, strSearch); } hideSoftKeyboard(v); txtSearch.setFocusable(false); txtSearch.setFocusableInTouchMode(false); } return false; } }); public void hideSoftKeyboard (View view) { InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); }