我有与此导航树的应用实现了导航的问题:
该标准实施后退按钮的罚款。
努力实现向上按钮时,问题开始。
我期待什么:
- 当用户在详细5活性并按下向上按钮应用程序前进到表3活性
- 当用户在详细7的活动 ,按向上的按钮,该应用程序可追溯到家庭活动
因此,在不同的方面,我想有回堆栈这种行为:
Android的文档( 实施祖导航 )建议使用下面的代码来处理高达导航 :
Intent parentActivityIntent = new Intent(this, MyParentActivity.class);
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
但由于详细活动的父活动不同的导航路径上的不同,我不知道是哪一个它确实是。 所以我不能把它的意图。
有没有办法知道在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系统的“向上按钮”的UX决定应对的困难。 因此,有没有一个明确的回答你的问题。
我对你有两种可能的解决方案。
1.模仿后退按钮行为。
你可以考虑增加一个额外的意图从其各个父母一方发射细节 。 这个额外的会通知那些他们需要时启动哪个活动活动android.R.id.home
被按下。
这将有效地意味着你的应用程序“蜗居”其共同的祖先,而不是简单地重新发动首页 。
实现这个的另一种方式,可以简单地执行onBackPressed()
而不是推出家庭用Intent.FLAG_ACTIVITY_CLEAR_TOP
,但请记住,相关的动画会比正常的“向上”的动作不同。
2.跳过中间活性及回家。
有些应用看待“向上按钮”作为“家”按钮。 你可能要考虑有它只是总是重启首页 Intent.FLAG_ACTIVITY_CLEAR_TOP
。
这是一个古老的职位肯定的,但因为我是研究SharedPreferences,我认为这可能是堆栈一个sharedPreferences数据中的信息,以及前下降2个父母每次修改它的价值的可能性。 然后通过阅读它,你应该能够直接了解你的父母,这无需构建整个类为。