Android-Navigation、Menu
Navigation
1、导入库;
def nav_version = "2.4.1"// Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version"
2、创建导航;


通过第一个图标加入节点(fragment),placeholder系空的新节点;

通过拖拽设置前后节点;

3、创建一个空Activity作为fragment的容器;
app:navGraph 属性将 NavHostFragment 与导航图相关联。导航图会在此 NavHostFragment 中指定用户可以导航到的所有目的地。
app:defaultNavHost="true" 属性确保您的 NavHostFragment 会拦截系统返回按钮。
注意只能有一个默认 NavHost。如果同一布局(例如,双窗格布局)中有多个宿主,请务必仅指定一个默认 NavHost。
4、根据需求为布局文件实现目标功能;
如:
public class ChooseFragment00 extends Fragment implements View.OnClickListener {private Button option_a,option_b,option_c;// Required empty public constructorpublic ChooseFragment00 (){}public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){View view =inflater.inflate(R.layout.fragment_00, container, false);option_a = view.findViewById(R.id.option_a);option_a.setOnClickListener(this);option_b = view.findViewById(R.id.option_b);option_b.setOnClickListener(this);option_c = view.findViewById(R.id.option_c);option_c.setOnClickListener(this);return view;}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.option_a:Navigation.findNavController(view).navigate(R.id.action_fragment_00_to_fgt_option_a);break;case R.id.option_b:Navigation.findNavController(view).navigate(R.id.action_fragment_00_to_fgt_option_b);break;case R.id.option_c:Navigation.findNavController(view).navigate(R.id.action_fragment_00_to_fgt_option_c);break;}}
}
onCreateView
View view =inflater.inflate(R.layout.fragment_00, container, false);创建与对应布局的连接;
onClick
实现事件发生。
Menu
1、同样的在res中创建menu文件夹;
2、在menu中创建菜单视图;

3、两个主要方法;
//给activity加载menu@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();//加载菜单文件inflater.inflate(R.menu.menu_base, menu);return super.onCreateOptionsMenu(menu);//必须调用父类的方法}//重写方法,处理点击菜单项的事件@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// 处理点击菜单项的事件switch (item.getItemId()) {case R.id.chat:this.textContent.setText("发起群聊!");return true;case R.id.add_friend:this.textContent.setText("添加朋友!");return true;default://其他的要这样返回,固定模式return super.onOptionsItemSelected(item);}}
重写onCreateOptionsMenu方法实现对菜单的加载,
重写onOptionsItemSelected方法实现对用户点击菜单项的事件响应,
也可重写onPrepareOptionsMenu() 方法动态改变菜单项
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
