Android向上导航多个父母的活动
在使用此导航树实现应用程序导航时遇到问题:
后退button的标准实施是好的。
尝试实现向上button时,问题就开始了。
我期望的是:
- 当用户在细节5活动 ,并按向上button应用程序转到列表3活动
- 当用户在细节7活动,并按下向上button应用程序返回到家庭活动
所以用不同的术语,我想在后面的堆栈上有这样的行为:
Android文档( Implementing Ancestral Navigation )build议使用以下代码来处理导航 :
Intent parentActivityIntent = new Intent(this, MyParentActivity.class); parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(parentActivityIntent); finish();
但是因为细节活动的父项活动在不同的导航path上有所不同,所以我不知道它究竟是哪一个。 所以我不能在Intent中调用它。
有没有一种方法来了解Android后端堆栈中真正的父代活动?
如果没有,有没有办法在这个应用程序中实现正确的导航 ?
我会坚持我对保罗的回答的评论:
这个想法是有一个堆栈的最后的Parent
活动遍历。 例:
public static Stack<Class<?>> parents = new Stack<Class<?>>();
现在,在你所有的家长活动(被认为是父母的活动 – 例如你的家庭:列表和家庭活动)中,你将这个添加到他们的onCreate
:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parents.push(getClass()); //or better yet parents.push(getIntent()); as @jpardogo pointed //of course change the other codes to make use of the Intent saved. //... rest of your code }
当你想返回到Parent
活动,你可以使用以下(根据你的代码):
Intent parentActivityIntent = new Intent(this, parents.pop()); parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(parentActivityIntent); finish();
我希望是对的(:
这是一个棘手的问题,在我看来,真正显示了应付Android的“上button”的UX决定的困难。 因此,你的问题没有一个明确的答案。
我有两个可能的解决scheme给你。
1.模仿后退button的行为。
你可以考虑增加一个额外的意图,以启动来自其各种父母之一的详细信息 。 这个额外的信息会告诉那些在按下android.R.id.home
时他们需要启动的活动。
这实际上意味着你的应用程序“回到”它的共同祖先,而不是简单地重新启动Home 。
实现这个的另一种方法可能是简单地执行onBackPressed()
而不是使用Intent.FLAG_ACTIVITY_CLEAR_TOP
启动Home ,但要记住,关联的animation将与正常的“向上”动作不同。
跳过中间活动,回家。
一些应用程序将“上键”视为“主键”。 您可能需要考虑只要始终使用Intent.FLAG_ACTIVITY_CLEAR_TOP
重新启动Home 。
这是一个肯定的旧post,但是当我研究SharedPreferences时,我认为可能会将这些信息堆叠在sharedPreferences数据中,并且每次在下一个父母之前修改它的值。 然后通过阅读,你应该能够直接了解你的父母,而不必为此build立一个全class。
- 错误:呈现问题以下类无法findandroid.support.v7.internal.widget.ActionBarOverlayLayout
- 自定义getFilter在android中的自定义ArrayAdapter
- Android Fragment没有find的ID的ID吗?
- 如何animation添加或删除Android ListView行
- Android列'_id'不存在?
- 使用意向Android发送位图
- Android – button点击播放声音 – 空指针exception
- Android Studio Gradle问题:OutOfMemoryError:PermGen空间
- BroadcastReceiver的位置