这是我的第二项活动,
@Override
public void onBackPressed() {
super.onBackPressed();
try {
object.put_stats(getApplicationContext());
}
} catch (JSONException | IOException e) {
e.printStackTrace();
}
this.finish();
overridePendingTransition(R.anim.slideouttoright, R.anim.slideinfromleft);
}
但是当我按下后退按钮时,我会被定向到主屏幕。 这是我称之为第二个活动的地方,
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivityForResult(intent, 1);
overridePendingTransition(R.anim.slideinfromright, R.anim.slideouttoleft);
我想在按下后退按钮时从第二个活动转到最后一个活动。我不想通过启动意图来开始一项新活动。
答案 0 :(得分:0)
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
setFlags
将替换您首先添加的标记。这可能不是你想要的。
您的意图只有Intent.FLAG_ACTIVITY_CLEAR_TOP
作为标志,这意味着:
如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。
所以很可能你之前的Activity只是从堆栈中删除,所以无处可去。在这两种情况下都使用addFlags
。
答案 1 :(得分:0)
为了简单起见,我建议您使用Fragment 使用Fragment,您不必在addToBackStack方法的帮助下担心这一点。 如果不是太晚或费力将您的活动迁移到碎片。
答案 2 :(得分:0)
你可以添加你的清单吗?
你确定你已经将第二项活动设定为第一项活动的孩子吗?
还检查Android 4.0及更低版本的向后兼容性
<activity
android:name="com.example.myfirstapp.SecondActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
您在此处解释了导航和父活动:
http://developer.android.com/intl/es/training/implementing-navigation/ancestral.html#SpecifyParent