我有3项活动:
MapActivity ScheduleActivity ItemDetailActivity
MapActivity和ScheduleActivity可以启动ItemDetailActivity。 问题是,当我单击后退按钮时,它总是返回到MapActivity。我一直在这个论坛上搜索,很多人回答“覆盖onBackPressed并启动意图”。 我尝试了很多东西,比如:覆盖onBackPressed并使用 如果要检测活动的ID。 清单中的ItemDetailActivity没有父属性。
<activity
android:name=".MapActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ScheduleActivity"
android:label="@string/title_activity_agenda"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ItemDetailActivity"
android:label="@string/title_item_detail"
android:theme="@style/AppTheme.NoActionBar" />
我在OnBackPressed事件中尝试过NavUtils,startActivity,但它确实不起作用。
从MapActivity打开ItemDetail的代码。
mClusterManager.setOnClusterItemInfoWindowClickListener(new ClusterManager.OnClusterItemInfoWindowClickListener<MyItem>() {
@Override
public void onClusterItemInfoWindowClick(MyItem myItem) {
Intent intent = new Intent(MapActivity.this, ItemDetailActivity.class);
intent.putExtra("instalattion", myItem.getInstalattion());
intent.putExtra("activity", "MapActivity");
startActivity(intent);
}
});
rv.addOnItemTouchListener(
new RecyclerClickListener(this, new RecyclerClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//whatever code
Intent intent = new Intent(ScheduleActivity.this, ItemDetailActivity.class);
intent.putExtra("instalattion", installationTO);
intent.putExtra("activity", "ScheduleActivity");
startActivity(intent);
}
}));
}
答案 0 :(得分:0)
在你的清单中:
<activity
android:name=".ItemDetailActivity"
android:label="@string/title_item_detail"
android:theme="@style/AppTheme.NoActionBar" >
<!-- SET YOUR PARENT ACTIVITY -->
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ScheduleActivity" />
</activity>
因此,将ItemDetailActivity的父活动设置为ScheduleActivity,然后返回父活动。