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() 方法动态改变菜单项


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部