fragment当activity中,toolbar 处理返回键

2023-06-18  本文已影响0人  吉凶以情迁

由于channel gradle渠道编译的特点模块可以定义不同的androidmefest.xml, activity,但是主app模块的channel不同分支无法设置
,所以考虑研究直接用fragment来做,但是 原来的事material design 是有toolbar的
因此进行了研究。
需要在onCreate中设置
布局中用toolbar的情况onCreateOptionsMenu不会触发,
返回事件不会在onOptionSelect触发需要直接根据toolbar设置setNavigationOnClickListener事件

onViewCreated

public class ExampleFragment extends Fragment {
    ...

   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        ...
        viewBinding.myToolbar.inflateMenu(R.menu.sample_menu);
  viewBinding.myToolbar.setNavigationIcon(R.drawable.ic_back);
        viewBinding.myToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Navigate somewhere.
            }
        });
    }

}

处理返回
onCreate

onBackPressedCallback=new OnBackPressedCallback(true) {

            @Override
            public void handleOnBackPressed() {
                AppRouteUtilX.showConfimExitHomeDialog(requireActivity());
            }
        };
        requireActivity().getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback);

在onDestory中移除即可
onBackPressedCallback.remove();

上一篇下一篇

猜你喜欢

热点阅读