2013-06-15 2 views
0

Я попытался следить за строкой руководства разработчиков и проверил ошибку, похожую на это, мой манифест и файл с возможностью поиска выглядят нормально, но диалоговое окно поиска по-прежнему не отображается. Любая помощь приветствуется заранее.Диалоговое окно поиска не отображается

ser.xml

<?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/hint"> 
</searchable> 

manifest.xml

<activity 
      android:name="e.ftsexample.MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 

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

Mainactivity

public class MainActivity extends Activity { 
    DbS cr; 
    private String[] from; 
    private int[] to; 
    private SimpleCursorAdapter str; 
    private ListView LS; 
    SQLiteDatabase ss; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     cr = new DbS(getApplicationContext()); 
     setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); 
     GetMysearch(getIntent()); 
     // views 
     LS = (ListView) findViewById(R.id.listView1); 
     from = new String[] { DbS.Name_Col, DbS.Number_col }; 
     to = new int[] { R.id.sV, R.id.sVS }; 
     ss = cr.getWritableDatabase(); 
     Cursor currr = ss.query(DbS.Table_Name, new String[] { " rowid _id ", 
       DbS.Name_Col, DbS.Number_col }, null, null, null, null, null); 

     str = new SimpleCursorAdapter(this, R.layout.qss, currr, from, to, 0); 

     LS.setAdapter(str); 
    } 

    private void GetMysearch(Intent myint) { 
     // TODO Auto-generated method stub 
     // Intent myint = getIntent(); 
     if (Intent.ACTION_SEARCH.equals(myint.getAction())) { 
      String query = myint.getStringExtra(SearchManager.QUERY); 
      Log.e("Reached", "intent"); 
      doMySearch(query); 
     } 
    } 

    private void doMySearch(String query) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getApplicationContext(), "QUERY REACHED", 
       Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public boolean onSearchRequested() { 
     // TODO Auto-generated method stub 
     Toast.makeText(getApplicationContext(), "onSearchRequested", 
       Toast.LENGTH_SHORT).show(); 
     return super.onSearchRequested(); 

    } 


    @Override 
    protected void onNewIntent(Intent intent) { 
     Toast.makeText(getApplicationContext(), "Intet passed", 
       Toast.LENGTH_SHORT).show(); 
     setIntent(intent); 
     GetMysearch(intent); 
    } 
} 

ответ

1

попробуйте добавить это к вам г активность:

<meta-data 
android:name="android.app.default_searchable" 
android:value="e.ftsexample.MainActivity" /> 

Edit: Причина заключается в том, что вы настроили вашу деятельность, чтобы получить поисковый запрос, но не инициировать search.you может добавить это к любой другой деятельности и начать поиск по называешь onSearchRequested();

надеюсь, что эта помощь.

+0

не работает – dreamer1989

+0

ahh, очевидно, что вы не вызываете onSearchRequested(), где вы только что переопределили его. для экземпляра просто добавьте «onSearchRequested()»; после "LS.setAdapter (str);" и посмотреть, что произойдет. –

+0

спасибо Тарек, он работает. но появится диалоговое окно, как только начнется действие, как начать его при нажатии на edittext – dreamer1989

Смежные вопросы