2012-04-07 9 views
0

私はAutoCompleteTextViewをコラボラティブActionItemとして使用しており、拡張およびフォーカスされたときにキーボードを表示したい。これは)(onCreateOptionsMenuに私のコードです:私はActionItemに最初の時間をクリックすると、何もkeybordはAndroid:AutoCompleteTextViewをCollababilative ActionItemとして表示しないキーボードをフォーカスに表示しない

menu.add("Search") 
      .setIcon(R.drawable.ic_search) 
      .setActionView(R.layout.collapsible_edittext) 
      .setShowAsAction(
        MenuItem.SHOW_AS_ACTION_ALWAYS 
          | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 


    final MenuItem searchMenuItem = menu.getItem(0); 
    searchMenuItem.setOnActionExpandListener(new OnActionExpandListener() { 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) item 
        .getActionView(); 
      autoCompleteTextView 
        .setOnFocusChangeListener(new OnFocusChangeListener() { 

         @Override 
         public void onFocusChange(View v, boolean hasFocus) { 
          Log.d(TAG, "onFocusChange: " + hasFocus); 
          if (hasFocus) { 
           mInputManager.showSoftInput(v, 
             InputMethodManager.SHOW_FORCED); 
          } else { 
           mInputManager.hideSoftInputFromWindow(
             v.getWindowToken(), 0); 
          } 

         } 
        }); 
      autoCompleteTextView.requestFocus(); 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) item 
        .getActionView(); 

      autoCompleteTextView.clearFocus(); 
      autoCompleteTextView.setText(""); 
      return true; 
     } 
    }); 

表示されません。折りたたんだ後、アイテムをクリックすると、キーボードが表示されます。しかし、ユーザーがアクションアイテムを最初にクリックすると、キーボードが表示されます。 私はActionBarSherlockを使用しています。 なぜ、最初の展開でキーボードが表示されないのですか?何か案は?

答えて

1

手動でフォーカスを編集テキストに設定し、手動でキーボードをonOptionsItemSelectedメソッドで表示しようとしましたか?

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case MENU_SEARCH: 
     // select edittext here 
     // show keyboard here 
     return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 

EDIT:

https://code.google.com/p/android-batavierenrace/source/browse/trunk/BataApp/src/com/ut/bataapp/activities/TeamsActivity.java

私は私のアプリでそれをテストし、それが動作する...それが働いた

public static void setKeyboardFocus(final EditText primaryTextField) { 
       (new Handler()).postDelayed(new Runnable() { 
         public void run() { 
           primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0)); 
           primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); 
         } 
       }, 100); 
     } 
+0

:私はここからキーボードを表示するには、このコードを発見しました。 。 ありがとうございました –

関連する問題