我正在尝试在我的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
您对如何解决我的问题有任何想法吗?
非常感谢您的时间
编辑
需要在运行时指定父活动。事实上,父活动可以是ActivityA
、ActivityB
或ActivityC
。
让我更好地解释这个问题。我的应用管理电视节目。我有一个MainActivty
,一个TVShowActivity
,一个SeasonActivity
和一个EpisodeActivity
。
在每个活动的导航抽屉中,我希望能够跳转到父活动:
-EpisodeActivity
我想去SeasonActivity
,TVShowActivity
或MainActivity
;
-SeasonActivity
我想去TVShowActivity
或MainActivity
;
-TVShowActivity
我想去MainActivity
.
如果我的活动堆栈如下所示,我的应用程序当前可以工作:MainActivty
=> TVShowActivity
=> SeasonActivity
=> EpisodeActivity
。
问题是有时用户可以直接从MainActivity
访问EpisodeActivity
,我希望能够使用相同的导航模式。
在每个活动上,您可以保留两个按钮,例如在其 xml 的属性中提供 onclick 事件,并在 java 类中提供意图代码:
' 公共无效 youronclickname(View v) { Intent mytent = new Intent(您的源类,到目标类); startActivity(myintent); } '
同样,在下一节课上尝试一下