我应该在哪里将getActivity())。getSupportActionBar()。setDisplayHomeAsUpEnabled(false)放在片段中?

时间:2018-06-23 04:36:54

标签: android android-studio android-toolbar

我在片段A中有3个按钮,“开始”,“完成”和“转到其他片段”。当我单击“开始”按钮时,我想隐藏后退按钮,而当我单击“完成”时,我想要后退按钮出现。

这就是我隐藏后退按钮的方式

@Override
public void onClick(View v) {
    ((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}

当我单击“开始”按钮时它正在工作,但是当我转到其他片段并返回片段A时,将显示“后退”按钮。我试图将后退按钮隐藏在onResumeonStartonCreateView中,但是它不起作用。

这是我的第一个片段,然后转到片段A

@Override
public void onClick(View v) {
    getFragmentManager().beginTransaction().replace(R.id.content, AFragment.newInstance(),
                            AFragment.TAG)
                            .addToBackStack(A.TAG)
                            .commit();
}

这在片段A中

public static AFragment newInstance() {
    AFragment fragment = new AFragment();
    return fragment;
}

@OnClick(R.id.btn)
public void goToOtherFragment(){
    getFragmentManager().beginTransaction().replace(R.id.content,
            OtherFragment.newInstance(), OtherFragment.TAG)
            .addToBackStack(OtherFragment.TAG)
            .commit();
}

,然后从OtherFragment中按返回按钮转到AFragment

2 个答案:

答案 0 :(得分:0)

如果您打开FragmentA到FragmentB,则必须在 FragmentB

中使用@Override方法
 @Override
 public void onDestroyView() {
    super.onDestroyView();
   ((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}

答案 1 :(得分:0)

您好,只需将呼叫片段B的片段代码替换为以下代码,它将起作用

public static AFragment newInstance() {
    AFragment fragment = new AFragment();
    return fragment;
}

@OnClick(R.id.btn)
public void goToOtherFragment(){
    getFragmentManager().beginTransaction().add(R.id.content, fragment)
                    .addToBackStack(OtherFragment.TAG).commit();
}