【发布时间】:2014-11-17 12:32:54
【问题描述】:
我正在尝试在我的 Android 应用上实现良好的向上导航。
例如,我想从DetailsActivity 转到MasterActivity。为此,我使用以下代码:
final Intent upIntent = new Intent(this, MasterActivity.class);
upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
supportNavigateUpTo(upIntent);
如果MasterActivity 已经在后台打开,它会很好用:它会关闭当前活动(以及堆栈中MasterActivity 上的所有活动)并在MasterActivity 上触发onNewIntent 方法。
但是,如果MasterActivity 不在堆栈中,则该方法会简单地关闭DetailsActivity,并且不会发生其他任何事情。
我想要实现的是,如果 MasterActivity 不在堆栈中,则当前 aActivity 将关闭并创建 MasterActivity 的新实例。
我已经尝试过以下标志组合,但没有成功:
Intent.FLAG_ACTIVITY_SINGLE_TOP
Intent.FLAG_ACTIVITY_CLEAR_TOP
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
您知道如何解决我的问题吗?
非常感谢您的宝贵时间
编辑
需要在运行时指定父Activity。其实父Activity可以是ActivityA,ActivityB或者ActivityC。
让我更好地解释这个问题。我的应用程序管理电视节目。我有一个MainActivty、一个TVShowActivity、一个SeasonActivity和一个EpisodeActivity。
在每个 Activity 的导航抽屉中,我希望能够跳转到父 Activity:
-开EpisodeActivity我想去SeasonActivity、TVShowActivity或MainActivity;
-开SeasonActivity我想去TVShowActivity或MainActivity;
-开TVShowActivity我想去MainActivity。
如果我的 Activity 堆栈类似于:MainActivty => TVShowActivity => SeasonActivity => EpisodeActivity,我的应用程序当前可以运行。
问题是有时用户可以直接从MainActivity 到达EpisodeActivity,而我希望能够使用相同的导航模式。
【问题讨论】:
-
stackoverflow.com/a/12276100/3322203 我认为您需要查看该解决方案。完美的例子。
-
请看我的编辑:我需要在运行时指定父Activity
-
使用 Fragments,因此您可以坚持单个 Activity
-
你应该使用
supportShouldUpRecreateTask,正如文档所说的developer.android.com/reference/android/support/v7/app/… -
我不能仅仅为了实现它就完全改变我的应用程序。除此之外,我的应用真的很复杂,这样的修改需要大量的时间
标签: android android-intent up-navigation