简书链接:fragment当activity中,toolbar处理返回键等注意事项
文章字数:123,阅读全文大约需要1分钟
由于channel gradle渠道编译的特点模块可以定义不同的androidmefest.xml, activity,但是主app模块的channel不同分支无法设置
,所以考虑研究直接用fragment来做,但是 原来的事material design 是有toolbar的
因此进行了研究。
需要在onCreate中设置
布局中用toolbar的情况onCreateOptionsMenu不会触发,
返回事件不会在onOptionSelect触发需要直接根据toolbar设置setNavigationOnClickListener事件

onViewCreated

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

1
2
3
4
5
6
7
8
onBackPressedCallback=new OnBackPressedCallback(true) {

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

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