2011-01-02 8 views
1

こんにちはイムを開くが、検索ボタンが押されたときに何がアンドロイド、検索私のアプリケーションで検索可能アクティビティを使用しようとしている

を起こりませんではないのAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.test" android:versionCode="1" android:versionName="1.0.0" android:configChanges="keyboardHidden|orientation"> 
     <uses-sdk android:minSdkVersion="7"/> 
     <application android:icon="@drawable/icon" android:label="Test"> 
      <activity android:name=".Test" android:label="Test" android:debuggable="true" android:theme="@android:style/Theme.NoTitleBar" android:launchMode="singleTask"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN"/> 
        <category android:name="android.intent.category.LAUNCHER"/> 
       </intent-filter> 
      </activity> 
      <activity android:name=".Searchable"> 
       <intent-filter> 
        <action android:name="android.intent.action.SEARCH" /> 
        <category android:name="android.intent.category.DEFAULT" /> 
       </intent-filter> 
       <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> 
      </activity> 
      <meta-data android:name="android.app.default_searchable" android:value=".Searchable"/> 
     </application> 
    </manifest> 

Searchable.xml(RES/XML /検索可能.xmlファイル)

<?xml version="1.0" encoding="utf-8"?> 
    <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="Search" android:hint="Perform Search"> 
    </searchable> 

Searchable.java(SRC/COM /試験/試験/ Searchable.java)

package com.test.test; 

import android.app.Activity; 
import android.app.SearchManager; 
import android.content.Intent; 
import android.os.Bundle; 

public class Searchable extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     handleIntent(getIntent()); 
    } 
    @Override 
    protected void onNewIntent(Intent intent) { 
     setIntent(intent); 
     handleIntent(intent); 
    } 
    private void handleIntent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      String query = intent.getStringExtra(SearchManager.QUERY); 
     } 
    } 
} 

TIA、

ng93

+0

ビューを表示するのを忘れていませんか?よう:setContentView(R.layout.main); –

答えて

3

あなたSearchable活動は何かを持っている - と、実際に結果を表示します。

私はちょうど私が昨日検索サポートが組み込まれて統合する方法については、このドキュメントでTrying to filter a ListView with runQueryOnBackgroundThread but nothing happens - what am I missing?

ルック尋ねた質問への答えによって提案されたように、1つを書いた:Using the Android Search Dialogをし、提案を提供する方法については、この記事を見てAdding Custom Suggestions

お客様のクラスSearchableは、クエリ文字列を取得した後にもう少し作業が必要です。例えば、私の活動にクエリ文字列を取得した後、私はこれを実行します。

 showResults(query); 

及びその方法は、次のようになります。

private void showResults(String query) { 
    // Load the list of countries based on the query 
    Cursor countryCursor = myDbHelper.getCountryList (query); 
    startManagingCursor (countryCursor); 

    // Hook up the query results to the list view 
    String[] from = new String[] { 
     WorldInfoDatabaseAdapter.KEY_COUNTRYCODE, WorldInfoDatabaseAdapter.KEY_COUNTRYNAME 
    }; 
    int[] to = new int[] { 
     R.id.countryflag, R.id.countryname 
    }; 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter (this, 
      R.layout.country_list_row, countryCursor, from, to); 
    adapter.setViewBinder (new FlagViewBinder()); 

    myCountryList.setAdapter (adapter); 
    myCountryList.setOnItemClickListener (new OnItemClickListener() { 

     @Override 
     public void onItemClick (AdapterView<?> parent, View view, int position, long id) { 
      String countryName = myDbHelper.getCountryByID (id); 
      if (countryName == null) { 
       new AlertDialog.Builder (SelectCountryActivity.this).setMessage (
         "Internal error: Cannot find the country with id'" + id + "'.").show(); 

       return; 
      } 

      // Package up the country name to return 
      Intent newCountryIntent = new Intent (myCountryList.getContext(), WorldInfoActivity.class); 
      newCountryIntent.putExtra (WorldInfoActivity.KEY_SELECTED_COUNTRY, countryName); 
      startActivity (newCountryIntent); 

      startActivity (newCountryIntent); 
      finish(); 
     } 
    }); 
} 

クエリ文字列で渡された国のために自分のデータベースを照会myDbHelperメンバーそれらをリストに表示します。私の活動は、このようになりますレイアウトを持っています

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    style="?pageBackground"> 
    <TextView 
     android:id="@+id/selectdlgtitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/select_country_title" 
     style="?dlgTitle" /> 
    <ListView 
     android:id="@+id/countrylist" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:cacheColorHint="#00000000" 
     android:padding="2px"/> 
    </LinearLayout> 

おそらくsetViewBinderコールせずに行うことができます - 私は旗のアイコンに国コードフィールドを翻訳していますので、私はそれを必要とします。

+0

ありがとうございますが、それでも動作させることはできません。私はSystem.out.println( "Searching")を追加しました。 onCreate()とonNewIntent()は表示されません。 – ng93

+5

私は今朝このトピックについてもっと読んでいましたが、searchable.xmlファイルで定数文字列を扱うことができなかったという人もいます。 2人は、一定の文字列では長い時間をかけてデバッグを行い、それは決して働かないと報告しました。彼らが文字列リソースに切り替えると、すべてがうまくいった。 –

+1

は文字列リソースに切り替わり、完全に動作します:D歓迎 – ng93

関連する問題