1

我在 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 进行搜索的方法,请注意我。

4

2 回答 2

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);
}
于 2013-04-23T19:44:14.740 回答
0

你应该使用

android:actionLayout="@layout/search_layout"

更多信息在这里:http: //developer.android.com/guide/topics/ui/actionbar.html#ActionView

于 2013-03-09T20:28:16.240 回答