1

シャーロックアクションバーの検索ビューに問題があるため、代わりに編集テキストを使用することにしました。しかし、編集テキストを使用したい場合、アプリがクラッシュします(android2.3)。android 2.3のsherlockアクティビティでsearchedittextまたは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;
}

これは私のedittextxmlソースです:

<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

あなたは使用する必要があります

android:actionLayout="@layout/search_layout"

詳細はこちら:http ://developer.android.com/guide/topics/ui/actionbar.html#ActionView

于 2013-03-09T20:28:16.240 に答える
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 に答える