比較的シンプルなAndroidアプリには、アイテムのリストを表示するActivity
と、選択したアイテムの詳細を表示する別のアプリがあります。リストのアクティビティを開始します。 FLAG_ACTIVITY_CLEAR_TOP
を使用して、この呼び出し元のログインアクティビティをクリアします):
Intent intent = new Intent(this, ListInstancesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
そして、そのアクティビティ内から、選択されているアイテムに対して次の操作を行います。
Intent detailIntent = new Intent(this, ShowInstanceActivity.class);
detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
すべて正常に動作し、ソフトキーの「戻る」ボタンを使用すると、予想どおりListInstancesActivity
に戻ります。ただし、代わりにアクションバーのバックアップボタンを押すと、ListInstancesActivity
が破棄されて再作成されます。これは、比較的計算コストがかかるため、悪いです。
アクションバーをソフトキーと同じように動作させ、破壊するのではなく、前のアクティビティに戻すにはどうすればよいですか。
アクションライブラリのサポートライブラリバージョンを使用していることに注意してください。
私のAndroidManifest.xml
の関連部分は
<activity
Android:name=".agenda.ListInstancesActivity"
Android:label="@string/list_instances_activity_title">
</activity>
<activity
Android:name=".agenda.ShowInstanceActivity"
Android:label="@string/show_instance_activity_title"
Android:parentActivityName=".agenda.ListInstancesActivity">
</activity>
アクションバーアップボタンの動作をオーバーライドできます:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
そして、戻るボタンの効果を再現します。
Android manifest.xmlで、親アクティビティタグに次の属性を追加すると、うまくいきました。
Android:launchMode="singleTop"
リファレンス: http://developer.Android.com/guide/topics/manifest/activity-element.html
同様の質問を参照してください: どのように親アクティビティに正しく戻ることができますか?
マニフェストで親アクティビティを指定すると、アクションバーの[ナビゲーション]ボタンをクリックすると、親アクティビティが再起動されます。
これを確認してください私はすでにこの質問に答えました
https://stackoverflow.com/a/32401235/3479012
onOptionsItemSelectedでAndroid.R.id.homeにアクセスしてアクションバーのネビゲーションボタンを上書きし、トップアクティビティを終了する必要があります。
マニフェストで親アクティビティが適切に設定されていないようです。これをShowInstanceActivityアクティビティタグ内に追加します。
<meta-data Android:name="Android.support.PARENT_ACTIVITY" Android:value=".agenda.ListInstancesActivity" />
したがって、最終アクティビティタグは次のようになります。
<activity
Android:name=".agenda.ShowInstanceActivity"
Android:label="@string/show_instance_activity_title"
Android:parentActivityName=".agenda.ListInstancesActivity">
<meta-data Android:name="Android.support.PARENT_ACTIVITY" Android:value=".agenda.ListInstancesActivity" />
</activity>
<?xml version="1.0" encoding="utf-8"?>
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:roundIcon="@mipmap/ic_launcher_round"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">
<activity Android:name=".WelcomeActivity">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name=".MainActivity" />
<activity Android:name=".StartActivity" />
<activity
Android:name=".LoginActivity"
Android:parentActivityName=".StartActivity"/>
<activity
Android:name=".RegisterActivity"
Android:parentActivityName=".StartActivity"/>
<activity Android:name=".SettingActivity">
</activity>
</application>
Anyone can check this code and find error??/
[戻る]ボタンをクリックすると、アプリが自動的に閉じられます...