在Sherlock Acionbar中搜索Edittext

时间:2012-12-12 07:15:11

标签: android android-edittext actionbarsherlock

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

2 个答案:

答案 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);
}