0


正如标题所示,我在实现某个片段中的搜索小部件时遇到了问题。我的问题是,当我使用inflater膨胀自定义视图内onCreateOptionsMenu和之后,我发现SearchView它始终为空!
如果任何人有相同或相似的问题,我将不胜感激的一些解释! :)
我敲我的头这对于过去两天......这里是布局:ActionBar Sherlock,Fragment and SearchWidget

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:id="@+id/menu_search" 
     android:title="Search" 
     android:icon="@drawable/abs__ic_search" 
     android:showAsAction="always|collapseActionView" 
     android:orderInCategory="0" 
     android:actionViewClass="com.actionbarsherlock.widget.SearchView"/> 

    <item android:id="@+id/menu_settings" 
     android:title="Settings" 
     android:icon="@drawable/jk_uma_button_settings_normal" 
     android:showAsAction="always" 
     android:orderInCategory="1" 
     /> 
</menu> 

代码

Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_explore, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus){ 
       Log.i(TAG, "======================FOCUS TRUE============"); 
      }else{ 
       Log.i(TAG, "======================FOCUS FALSE==========="); 
      } 
     } 

    }); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.i(TAG, "onCreate"); 
    api_key = Configuration.get_prefereence_string(getActivity(), "user_activation_key", null); 
    user_id = Configuration.get_prefereence_string(getActivity(), "user_id", null); 
    setHasOptionsMenu(true); 
} 

回答

4

据我所知,onCreateOptionsMenu是的onCreate中调用,但在方法的末尾启用选项菜单功能。尝试在Fragment的构造函数中设置HasOptionsMenu(true)。

public YourFragment() { 
    this.setHasOptionsMenu(true); 
} 

要从活动

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_SEARCH) { 
     this.onSearchClicked(); 
     return true; 
    } 
    return false; 
} 
+0

你是一个生命的救星赶上硬件搜索按钮按下!还有一个问题...当用户点击键盘上的搜索按钮时如何捕捉?他在搜索视图中写入内容并单击keboard上的搜索...如何捕获它? – Jovan 2013-03-12 14:28:45

+0

我发现它...它是setOnQueryTextListener ...我以某种方式跳过它......再次感谢人!!!! – Jovan 2013-03-12 14:31:47

+0

更新了捕获硬件搜索按钮的答案。 – 2013-03-12 14:32:43

相关问题