应用栏不会根据导航组件中的片段发生变化

时间:2019-12-11 18:35:10

标签: android android-fragments android-jetpack android-appbarlayout android-jetpack-navigation

在我的应用中,我正在使用导航组件。我只使用了一个Activity和几个Fragment.MainActivity托管了所有Fragment。我已经在MainActivity中设置了自定义AppBar。我想为某个Fragment更改AppBar。为此,这是我的代码

public class MessageFragment extends Fragment {
private FragmentMessageBinding messageBinding;
private ChatActionBarBinding barBinding;
ActionBar actionBar;

public MessageFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    messageBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_message, container, false);
    return messageBinding.getRoot();

}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
    barBinding = DataBindingUtil.inflate(layoutInflater, R.layout.chat_action_bar, null, false);
    actionBar.setCustomView(barBinding.getRoot());

}
}

当我导航到该垂直片段时,AppBar发生了预期的变化。但是问题是当我按下“后退”按钮或导航到另一个片段时,AppBar保持不变。它不会根据片段而改变。 这是我的应用程序的一些屏幕截图。

有什么解决办法吗?

this is the particular fragment

The App bar shows here comes from previous fragment.when user press the back button

should look like this

0 个答案:

没有答案