我正在尝试在我的 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
)并onNewIntent
在MasterActivity
.
但是,如果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
。
在每个活动的导航抽屉中,我希望能够跳转到父活动:
-OnEpisodeActivity
我想去SeasonActivity
,TVShowActivity
或MainActivity
;
-SeasonActivity
在我想去TVShowActivity
或MainActivity
;
-TVShowActivity
我想去MainActivity
。
如果我的 Activity 堆栈类似于:MainActivty
=> TVShowActivity
=> SeasonActivity
=> ,我的应用程序当前可以工作EpisodeActivity
。
问题是有时用户可以EpisodeActivity
直接从到达MainActivity
,而我希望能够使用相同的导航模式。