Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 片段导航不适用于ActionBar上的“后退”按钮,适用于物理_Java_Android_Android Fragments_Android Actionbar - Fatal编程技术网

Java 片段导航不适用于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

有了Android target API 24,minver 15,我正在基于“一个活动,多个片段”的理念编写一个应用程序,我不能通过ActionBar上的后退按钮“向上”片段层次结构

手机上的物理设备没有问题

我之所以强调它,是因为尽管我发现了许多类似的问题和教程,但在本例中,问题似乎并不在于导航本身,因为唯一不起作用的是后插入符号按压

这是当前的片段层次结构:

[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();
            }
        }
    );