Android 在一个片段中,工具栏上已启用SetHomeButton

Android 在一个片段中,工具栏上已启用SetHomeButton,android,android-fragments,android-toolbar,Android,Android Fragments,Android Toolbar,你好, 我正在使用新的工具栏并显示在我的片段中。但是,我希望能够通过启用setHomeButtonEnabled(true)导航回上一个片段。但是,在onCreateView中的我的片段中没有这样的函数。这在活动中有效,但在片段中无效 是否有必要让工具栏显示setHomeButtonEnabled,以便显示一个箭头,以便用户可以返回 Android studio 1.3 com.android.support:appcompat-v7:22.1.1 在我的活动中,我扩展了appcompat活动

你好,

我正在使用新的工具栏并显示在我的片段中。但是,我希望能够通过启用
setHomeButtonEnabled(true)
导航回上一个片段。但是,在onCreateView中的我的片段中没有这样的函数。这在活动中有效,但在片段中无效

是否有必要让工具栏显示setHomeButtonEnabled,以便显示一个箭头,以便用户可以返回

Android studio 1.3
com.android.support:appcompat-v7:22.1.1
在我的活动中,我扩展了
appcompat活动
并使用
appcompat-v7:22.1.1

public class FileTransferFragment extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setHasOptionsMenu(true);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_file_transfer, container, false);

        final Toolbar toolbar = (Toolbar)view.findViewById(R.id.app_bar);
        AppCompatActivity appCompatActivity = (AppCompatActivity)getActivity();
        appCompatActivity.setSupportActionBar(toolbar);

    /* TRIED THIS BUT DIDN'T WORK */
        appCompatActivity.getActionBar().setHomeButtonEnabled(true);
        appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
        return view;
    }
}
正如您在图中所看到的,工具栏左侧没有允许用户回写的阵列。 使用

public class FileTransferActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_transfer);

        if(savedInstanceState == null) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.add(R.id.fragment_container,
                    FileTransferFragment.getFileTransferFragment(1234), "FileTransferFragment");
            fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            fragmentTransaction.commit();
        }
    }
}
而不是

   appCompatActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

如果在片段中启用了actionBar,这是一件好事。现在,navigationDrawer图标,称为汉堡包图标,如果要启用它, 在片段中需要以下方法

首先,创建实例

   appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
private ActionBarDrawerToggle drawerToggle;
private DrawerLayout mDrawerLayout;
您需要以上实例

   appCompatActivity.getActionBar().setDisplayHomeAsUpEnabled(true);
private ActionBarDrawerToggle drawerToggle;
private DrawerLayout mDrawerLayout;
在此之后,当抽屉关闭或打开时,您的片段应该有某种方式通知main活动 您可以通过syncState()方法实现这一点

您可以在片段中作为单独的方法实现这个整体,并从main调用它

阅读此处的文档以获取更多信息。关于全班


在片段的父活动中设置操作栏,而不是在onCreateView中。要获取片段中的操作栏,请在onActivityCreated()内部使用((AppCompatiActivity)getActivity()).getSupportActionBar(),然后您可以自定义它。您能告诉我。。对于actionBar。。。您正在使用工具栏小部件吗?是否?我正在使用我提供的解决方案support-v7-widget-Toolbar,请尝试一下。。它100%有效!谢谢,这解决了我的问题。只是一个简单的问题。为什么铸造是必要的活动。当getActivity()返回AppCompactActivity是其子类的FragmentActivity时?希望你能理解。谢谢