Tampilan Pencarian di ActionBarSherlock

Saya menggunakan widget SearchView di ActionbarSherlock sebagai berikut:

File.java

public boolean onCreateOptionsMenu(Menu menu) {
   MenuInflater inflater = getSupportMenuInflater();
   inflater.inflate(R.menu.main, menu);

   SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
   SearchView searchView = (SearchView) menu.findItem(R.id.MenuSearch).getActionView();
   searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
   searchView.setIconifiedByDefault(true);
   searchView.setSubmitButtonEnabled(true);

   return true;
}

File.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/MenuSearch" android:title="@string/Bs"
       android:icon="@drawable/ic_action_search"
       android:showAsAction="always|withText"
       android:actionViewClass="com.actionbarsherlock.widget.SearchView" >
    </item>

</menu>

Dalam aplikasi saya, saya dapat menampilkan ikon pencarian dan memilihnya, membuka kotak pencarian untuk widget, tetapi ketika saya menulis pencarian apa pun, saya tidak tahu cara berinteraksi dengan widget SearchView untuk meluncurkan aktivitas baru dan menampilkan serangkaian hasil.

Dengan perintah searchView.setSubmitButtonEnabled(true); muncul ikon yang mirip dengan 'bermain' dan saya kira itu hanya untuk itu, tapi saya tidak tahu bagaimana cara berinteraksi dengannya.

Adakah yang bisa membantu?


person KryNaC    schedule 10.10.2013    source sumber


Jawaban (1)


Dokumentasi resmi android di sini menjelaskan cara memulai aktivitas baru untuk menangani kueri penelusuran dan menampilkan hasil.

Pertama, Anda perlu membuat (jika Anda belum melakukannya) konfigurasi yang dapat dicari di res/xml/searchable.xml, seperti ini:

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_name"
        android:hint="@string/search_hint" />

Setel konfigurasi ini untuk aktivitas Anda, yang berisi SearchView di bilah tindakan, seperti ini (dalam manifes):

<activity ... >
    ...
    <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable" />

</activity>

Jadi pada dasarnya, Anda memerlukan aktivitas pencarian Anda (aktivitas baru yang akan dimulai setelah mengirimkan permintaan pencarian) untuk menangani tindakan android.intent.action.SEARCH. Deklarasikannya dalam manifes seperti ini:

<activity android:name=".SearchResultsActivity" ... >
    ...
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    ...
</activity>

Dan aktivitas pencarian Anda akan terlihat seperti ini:

public class SearchResultsActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
        handleIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        ...
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {

        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            //use the query to search your data somehow
        }
    }
    ...
}
person hendrix    schedule 10.10.2013