2012-10-04 25 views
0

我在Actionbar(ActionbarSherlock)中有一個摺疊搜索EditView菜單。當setShowAsAction方法設置爲SHOW_AS_ACTION_NEVER時,鍵盤顯示並且用戶可以按預期開始鍵入。在Actionbar中的EditText只在SHOW_AS_ACTION_NEVER時獲得焦點

但是,當我將該值設置爲SHOW_AS_ACTION_ALWAYS時,用戶必須在開始鍵入之前觸摸EditText,因爲它似乎沒有焦點!

我的代碼有什麼問題或解決此問題的方法嗎?

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    final MenuItem search = menu.add(0, MENU_SEARCH, MENU_SEARCH, getString(R.string.search)); 
    search.setIcon(R.drawable.ic_action_search); 
    search.setActionView(R.layout.action_search); 
    search.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case MENU_SEARCH: 
      mSearch = (EditText) item.getActionView(); 
      mSearch.addTextChangedListener(mFilterTextWatcher); 
      mSearch.requestFocus(); 
      mSearch.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
       } 
      }, 200); 

      break; 
    } 
    return true; 
} 

action_search.xml

<?xml version="1.0" encoding="utf-8"?> 
<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:hint="@string/search" /> 

回答

0

的解決方案是巢活動內的片段。

public class ProductListActivity extends SherlockFragmentActivity { 
    … 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { 
      ProductListFragment list = new ProductListFragment(); 
      getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); 
     } 
    } 

    public static class ProductListFragment extends SherlockListFragment { 
     … 
    } 
} 
+1

對於除您以外的任何讀者,這沒有任何意義。片段突然從哪裏來的? – pjv

+0

最初的片段是一個單獨的類文件。所以我將它嵌套在Activity類中 – RobCroll

相關問題