メインアクティビティに検索ウィジェットを実装しました..そして、私のMainActivityはすべての検索機能を処理しています..クエリが実行されると、結果は必要に応じて表示されます..しかし、本当の問題は、検索クエリの結果が表示されている間です.基本的なMainActivityの内容に戻りたい場合は、ホーム/アップボタンまたはデバイスの戻るボタンを押してみます...ホーム/アップボタンを押しても何も起こりません..単に開いている検索ウィジェットが折りたたまれます...しかし、アプリを終了する戻るボタン..
私が欲しいのは..検索内容が表示された後、アプリを終了せずに MainActivity の開始結果で基本に戻りたい..
これが私のManifest.xmlです
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.pockettutsforcosm"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:parentActivityName=".MainActivity" >
<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/searchable" />
</activity>
<meta-data
android:name="android.app.default_searchable"
android:value=".MainActivity" />
</application>
</manifest>
UPDATE MainActivity ソース -
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater().inflate(R.menu.main, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =(SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// Do not iconify the widget; expand it by default
searchView.setIconifiedByDefault(false);
searchView.setSubmitButtonEnabled(true);
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);}
次のコードを使用して処理しています-
@Override
protected void onNewIntent(Intent intent)
{
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String searchText = intent.getStringExtra(SearchManager.QUERY);
doMySearch(searchText);
// Do work using string
}
}
private void doMySearch(String searchText)
{
c = dbOpen.getMySearchFromDB(searchText);
showListContent(c);
}
私は呼び出しています-handleIntent(getIntent); MainActivity の onCreate() で