ich eine durchsuchbare Aktivität in meinem Android App implementiert, und ich gebe dem Nutzer die Möglichkeit, direkt auf die Vorschläge zu klicken ...Leere Aktivität jedes Mal Benutzer klickt auf Vorschläge
Das Problem ist, dass jedes Mal, wenn Sie klicken Wenn Sie auf einen Vorschlag drücken, gelangen Sie in eine leere durchsuchbare Aktivität. Dies bietet keine gute Benutzererfahrung und ich möchte es beheben.
Hier mein Code:
MainActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search_item).getActionView();
//Specify the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo
(new ComponentName(this, SearchableActivity.class)));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
return true;
}
durchsuchbare Aktivität
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchable);
handleIntent(getIntent(), false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.v("Activity", "onCreateOptionMenu");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search_item).getActionView();
//Specify the searchable activity (this one)
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true); //Submit research button
searchView.setQueryRefinementEnabled(true); //Move the suggestion in the search bar
searchView.setIconifiedByDefault(true); // Do not iconify the widget; expand it by default
return true;
}
@Override
protected void onNewIntent(Intent intent) {
Log.v("(onNewIntent", "im in NewIntent -Activity");
// Because this activity has set launchMode="singleTop", the system calls this method
// to deliver the intent if this activity is currently the foreground activity when
// invoked again (when the user executes a search from this activity, we don't create
// a new instance of this activity, so the system delivers the search intent here)
handleIntent(intent, true);
}
private void handleIntent(Intent intent, boolean onNewIntent) {
//Get the intent, verify the action and get the query
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
//DO MY STUFF WITH THE QUERY
Bundle arguments = new Bundle();
arguments.putString(QUERY_FOR_BUNDLE, query);
SearchableFragment searchableFragment = new SearchableFragment();
searchableFragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.activity_searchable_container, searchableFragment)
.commit();
Toast.makeText(getApplicationContext(), "(onCreate)Searching by: " + query, Toast.LENGTH_SHORT).show();
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri uri = intent.getData();
int id = Integer.parseInt(uri.getLastPathSegment());
Intent intentDetailActivity = new Intent (getApplicationContext(), DetailActivity.class);
intentDetailActivity.putExtra("ID", id);
Toast.makeText(getApplicationContext(), "(onCreate) Suggestion ID: " + id, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "(onCreate) Suggestion URI: " + uri, Toast.LENGTH_LONG).show();
startActivity(intentDetailActivity);
}
}
searchable.xml
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="HINT"
android:label="@string/app_name"
android:includeInGlobalSearch="true"
android:searchSuggestAuthority="com.test.tcook.app"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestIntentData="intentTest"
android:searchSuggestThreshold="1"
android:searchSuggestSelection=" ?"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
/>
Danke, das ist genau die Lösung, nach der ich gesucht habe !! – Alex