Java 片段导航不适用于ActionBar上的“后退”按钮,适用于物理
有了Android target API 24,minver 15,我正在基于“一个活动,多个片段”的理念编写一个应用程序,我不能通过ActionBar上的后退按钮“向上”片段层次结构 手机上的物理设备没有问题 我之所以强调它,是因为尽管我发现了许多类似的问题和教程,但在本例中,问题似乎并不在于导航本身,因为唯一不起作用的是后插入符号按压 这是当前的片段层次结构:Java 片段导航不适用于ActionBar上的“后退”按钮,适用于物理,java,android,android-fragments,android-actionbar,Java,Android,Android Fragments,Android Actionbar,有了Android target API 24,minver 15,我正在基于“一个活动,多个片段”的理念编写一个应用程序,我不能通过ActionBar上的后退按钮“向上”片段层次结构 手机上的物理设备没有问题 我之所以强调它,是因为尽管我发现了许多类似的问题和教程,但在本例中,问题似乎并不在于导航本身,因为唯一不起作用的是后插入符号按压 这是当前的片段层次结构: [A] [B] | [C] 从NavigationDrawer到片段[A]和[B],当我离开时,一切都按预期进行。在Fragme
[A] [B]
|
[C]
从NavigationDrawer到片段[A]
和[B]
,当我离开时,一切都按预期进行。在Fragment[A]
中,它包含一个列表视图
,然后我单击一个元素,该元素使用以下代码将我带到Fragment[C]
:
FragmentA.java
这样,Fragment[C]
就会显示出来,汉堡包图标就变成了后面的插入符号。我可以导航到上一个片段[A]
点击Android手机上的物理后退按钮(底部),但点击后退插入符号没有任何作用
以下是其他部分的相关代码,以及对(遗漏)执行的注释
MainActivity.java
FragmentC.java
我在这里阅读了各种Android文档和问题/答案,或多或少实现了所有声明,但没有成功
如何使ActionBar后退按钮工作?问题是我(好的,示例NavigationDrawer Android项目)正在使用工具栏
((MainActivity)getActivity()).mDrawerToggle.setDrawerIndicatorEnabled(false);
((MainActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.frame, new DetailFragment())//here add add fragment on stack
.addToBackStack(null)
.commit();
在这种情况下,要恢复工作,您需要添加以下内容:
mDrawerToggle.setToolbarNavigationClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
}
);
所有常用方法都不起作用。不起作用,更糟糕的是,
Fragment[A]
和Fragment[C]
重叠显示。按physical back(物理后退)按钮可删除片段[C]
覆盖,但ActionBar的背面不会执行任何操作。
@Override
public boolean onOptionsItemSelected(MenuItem item){
/* NEVER EXECUTED.*/
Toast.makeText(getActivity(), "Fragment onOptionsItemSelected", Toast.LENGTH_SHORT).show();
switch(item.getItemId()){
case android.R.id.home:
getActivity().onBackPressed();
break;
}
return super.onOptionsItemSelected(item);
}
((MainActivity)getActivity()).mDrawerToggle.setDrawerIndicatorEnabled(false);
((MainActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.frame, new DetailFragment())//here add add fragment on stack
.addToBackStack(null)
.commit();
mDrawerToggle.setToolbarNavigationClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
}
);