Я попытался следить за строкой руководства разработчиков и проверил ошибку, похожую на это, мой манифест и файл с возможностью поиска выглядят нормально, но диалоговое окно поиска по-прежнему не отображается. Любая помощь приветствуется заранее.Диалоговое окно поиска не отображается
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);
}
}
не работает – dreamer1989
ahh, очевидно, что вы не вызываете onSearchRequested(), где вы только что переопределили его. для экземпляра просто добавьте «onSearchRequested()»; после "LS.setAdapter (str);" и посмотреть, что произойдет. –
спасибо Тарек, он работает. но появится диалоговое окно, как только начнется действие, как начать его при нажатии на edittext – dreamer1989