尝试在Android应用程序中管理任务和后台堆栈
我在其中使用滑动菜单,我可以从中开始不同的活动:Activity1,Activity2 ...(每个活动的菜单类似)。
MainActivity是一个启动器
我可以在这些活动之间导航,当我按下后退按钮时,我必须总是回到MainActivity。
这就是为什么我从没有历史的菜单开始活动的原因:
Intent i1 = new Intent(getApplicationContext(), Activity1.class);
i1.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i1);
问题是,从Activity1我也可以开始一个我必须保留历史的意图:
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:1234567890"));
startActivity(callIntent);
拨号后我想回到Activity1,但正如你现在所看到的,我将回到MainActivity(因为没有历史记录)。
此外,我尝试使用历史记录开始新活动并完成上一个活动:
Intent i1 = new Intent(getApplicationContext(), Activity1.class);
finish();
startActivity(i1);
这里所有的一切都是正确的拨号意图(我不会在拨号前完成Activity1),但每当我按下后退按钮我退出应用程序。
试图在图片上显示这个想法
也尝试在清单中玩noHistory,但没有成功。
我可以在启动事件之前返回历史记录(带有wlags或extras),也就是没有历史记录吗?
如何解决?
答案 0 :(得分:1)
应用程序退出是因为您在转到Activity1时完成了MainActivity
所以要解决它:你可以在启动Activity1时删除> as.POSIXct(times, format=formats)
[1] "2015-07-03 00:15:00 EDT" "2015-07-03 00:15:00 EDT"
> attributes(as.POSIXct(times, format=formats))
$class
[1] "POSIXct" "POSIXt"
$tzone
[1] ""
,
单击Activity1中的后退按钮时重新启动MainActivity
将此代码添加到您的Activity1
finish()
答案 1 :(得分:0)
如果您的应用程序地图不会更改,您可以在清单中为您拥有的每个活动设置“父活动”属性。
例如
for Activity 1/2/3 - 父母将成为您的MainActivity。
您可以通过更改清单中的活动项来执行此操作
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
另一种方法是覆盖行为不同的activitie类中的“onBackPressed”方法