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