android studio菜单跳转页面,Android Studio - Navigation (页面之间的切换)

1.创建 Fragment 类 演示如下:

8d11df9bf34b6274f54b5bbe101428f7.png

下面两个选项如非必要无需选择

6526bd80a234ed0b755f933cf18a37d6.png

如图:

我创建的是DetailFragment 和HomeFragment创建成功会出现 Java 文件 和xml 文件

905001b52d30d1eff0af94f9afe1daec.png

2. 设计布局 ,实现代码

点击需要的编辑的界面的xml 文件,编辑界面,最好引进ConstraintLayout 方便布局

1ce6a31461eae725ec975148b60341d3.png

3. 在res 创建 新的资源文件 如图所示:

5eccdd1b8d6fb12c8f25d3939e7f3f02.png

创建成功之后将设计好的两个界面引入:  红色的为引入界面  紫色的地方为引入之后界面  箭头的方向(需要自己手动连接箭头)及界面跳转的方式

96297d80496d851c283a3bb0a5519d77.png

在如下的侧边栏可以设计界面跳转的动画 和开始界面 等等。

1692802eb64a79b5e15b3a5b675d3c3b.png

4. 最容易忘记的一步 :

在main_activity.xml  将设计好的 fragment 引入:

找到 Containers 当中的 NavHostFragment 将设计好的导入即可。

16379794c13d66599b0d9b37ec88c017.png

后台实现代码:

HomeFragment :

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 package com.example.navigationdemo;2

3

4 import android.os.Bundle;5

6 import androidx.annotation.NavigationRes;7 import androidx.annotation.Nullable;8 import androidx.fragment.app.Fragment;9 import androidx.navigation.NavController;10 import androidx.navigation.Navigation;11

12 import android.view.LayoutInflater;13 import android.view.View;14 import android.view.ViewGroup;15 import android.widget.Button;16

17

18 /**19 * A simple [email protected] Fragment} subclass.20 */

21 public class HomeFragment extends Fragment {22

23

24 public HomeFragment() {25 //Required empty public constructor

26 }27

28

29 @Override30 public View onCreateView(LayoutInflater inflater, ViewGroup container,31 Bundle savedInstanceState) {32 //Inflate the layout for this fragment

33 return inflater.inflate(R.layout.fragment_home, container, false);34 }35

36 @Override37 public voidonActivityCreated(@Nullable Bundle savedInstanceState) {38 super.onActivityCreated(savedInstanceState);39 Button button;40 button=getView().findViewById(R.id.button);41 button.setOnClickListener(newView.OnClickListener() {42 @Override43 public voidonClick(View v) {44 //找到button 所归属的Controller

45 NavController controller=Navigation.findNavController(v);46 controller.navigate(R.id.action_homeFragment_to_detailFragment);47 }48 });49

50 }51 }

View Code

DetailFragment:

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 package com.example.navigationdemo;2

3

4 import android.os.Bundle;5

6 import androidx.annotation.Nullable;7 import androidx.fragment.app.Fragment;8 import androidx.navigation.Navigation;9

10 import android.view.LayoutInflater;11 import android.view.View;12 import android.view.ViewGroup;13 import android.widget.Button;14

15

16 /**17 * A simple [email protected] Fragment} subclass.18 */

19 public class DetailFragment extends Fragment {20

21

22 public DetailFragment() {23 //Required empty public constructor

24 }25

26

27 @Override28 public View onCreateView(LayoutInflater inflater, ViewGroup container,29 Bundle savedInstanceState) {30 //Inflate the layout for this fragment

31 return inflater.inflate(R.layout.fragment_detail, container, false);32 }33

34 @Override35 public voidonActivityCreated(@Nullable Bundle savedInstanceState) {36 super.onActivityCreated(savedInstanceState);37 //Button button;

38 getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_detailFragment_to_homeFragment));39 }40 }

View Code

MainActivity

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 package com.example.navigationdemo;2

3 import androidx.appcompat.app.AppCompatActivity;4 import androidx.navigation.NavController;5 import androidx.navigation.Navigation;6 import androidx.navigation.ui.NavigationUI;7

8 import android.os.Bundle;9

10 public class MainActivity extends AppCompatActivity {11

12 @Override13 protected voidonCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 setContentView(R.layout.activity_main);16 //创建返回键 左上角

17 NavController controller= Navigation.findNavController(this,R.id.fragment);18 NavigationUI.setupActionBarWithNavController(this,controller);19 }20 //实现返回功能

21 @Override22 public booleanonSupportNavigateUp() {23 NavController controller=Navigation.findNavController(this,R.id.fragment);24 returncontroller.navigateUp();25 //return super.onSupportNavigateUp();

26 }27 }

View Code

这里使用的是databinging;

还有些xml 的配置 就不写了。。

原文:https://www.cnblogs.com/cxy0210/p/12436956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值