我在sherlock操作栏中遇到搜索视图问题,所以我决定使用编辑文本。但当我想使用编辑文本我的应用程序崩溃(Android 2.3)。我如何在android 2.3的sherlock活动中使用搜索edittext或searchview?
这是我的onCreateOptionsMenu函数:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater minflater = getSupportMenuInflater();
minflater.inflate(R.menu.activity_main, menu);
View v = (View) menu.findItem(R.id.search).getActionView();
txtSearch = ( EditText ) v.findViewById(R.id.txt_search);
txtSearch.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return false;
}
});
return true;
}
这是我的edittext xml源:
<EditText
android:id="@+id/txt_search"
android:inputType="text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cursorVisible="true"
android:hint="@string/hint"
android:imeOptions="actionDone"
android:textColor="@android:color/black"
android:textCursorDrawable="@android:color/black"
/>
和我的搜索菜单项:
<item
android:id="@+id/search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always|collapseActionView"
android:actionViewClass="@layout/search_layout"
/>
如果有人知道在sherlock活动中使用searchview的方法或在sherlock操作栏中使用edittext进行搜索,请注意我。
答案 0 :(得分:0)
你应该使用
android:actionLayout="@layout/search_layout"
此处有更多信息:http://developer.android.com/guide/topics/ui/actionbar.html#ActionView
答案 1 :(得分:0)
为我工作:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.your_menu, menu);
// "0" is the number of menu item search in my example
menu.getItem(0).setActionView(R.layout.your_layout_search); //your layout with edittext
EditText editSearch = (EditText) menu.getItem(0).getActionView().findViewById(R.id.edit_search);
return super.onCreateOptionsMenu(menu);
}