ol_*_*_er 38 android android-actionbar
我在使用此导航树在应用程序上实现导航时遇到问题:

后退按钮的标准实现很好.
尝试实现"向上"按钮时,问题就出现了.
我期待的是:
所以从不同的角度来说,我希望在后台堆栈上有这种行为:

Android文档(实现祖先导航)建议使用以下代码来处理导航:
Intent parentActivityIntent = new Intent(this, MyParentActivity.class);
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
但是因为详细活动的父活动在不同的导航路径上有所不同,所以我不知道它实际上是哪一个.所以我不能在Intent中调用它.
有没有办法知道Android后台堆栈中真正的父活动?
如果没有,有没有办法在这个应用程序中实现正确的导航?
She*_*tib 22
我会坚持我对保罗答案的评论:
想法是Parent遍历最后一个活动的堆栈.例:
public static Stack<Class<?>> parents = new Stack<Class<?>>();
Run Code Online (Sandbox Code Playgroud)
现在,在您的所有父活动(在您的情况下被视为父项的活动-Eg:List和Home)中,您将其添加到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
}
Run Code Online (Sandbox Code Playgroud)
如果要返回Parent活动,可以使用以下内容(根据您的代码):
Intent parentActivityIntent = new Intent(this, parents.pop());
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
我希望是对的(:
| 归档时间: |
|
| 查看次数: |
12317 次 |
| 最近记录: |