Android Studio 之 Navigation【1.页面之间的切换】
1.创建 2个 Fragment ,下面两个include 不要勾

2.创建好 Fragment 后,打开layout中的 fragment.xml 文件,将里面默认的 textView 控件删除掉
把 ConstraintLayout 拖进来,用它来布局,比较方便

3.在res上右击,创建一个Navigation资源

第4步,在navigation新建的文件中,把刚才创建的2个 fragment 添加进来

第5步,设置导航连接, 右边的Label是显示在最顶部的title内容

第六步:activity_main.xml文件中,把里面默认的控件删除掉,并把NavHostFragment控件拖进来


添加后4个边界连接上
第7步,fragment 页面添加按钮的事件
按钮的点击事件放在这个事件中:onActivityCreated
package com.example.nativigationdemo1; import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation; import static android.view.View.OnClickListener; /**
* A simple {@link Fragment} subclass.
*/
public class HomeFragment extends Fragment { public HomeFragment() {
// Required empty public constructor
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
} @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); Button button;
//通过 getView() 就能访问到 HomeFragment与DetialFrament中的按钮
//注意下面这里的id不能写错了,如果写错了会导致app启动就出错
button = getView().findViewById(R.id.button2);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
NavController controller = Navigation.findNavController(v);
controller.navigate(R.id.action_homeFragment_to_detialFragment);
}
}); }
}
另一个fragment 界面的事件方法
package com.example.nativigationdemo1; import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation; /**
* A simple {@link Fragment} subclass.
*/
public class DetialFragment extends Fragment { public DetialFragment() {
// Required empty public constructor
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_detial, container, false);
} @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); getView().findViewById(R.id.button).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_detialFragment_to_homeFragment));
}
}
最后一步,在 MainActivity 的 java 文件中,设置头部导航的返回和头部内容的显示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//页面头部标题
NavController controller = Navigation.findNavController(this,R.id.fragment); //这里的 R.id.fragment 是 activity界面拖进来的 fragment组件(NavHotFragment)
NavigationUI.setupActionBarWithNavController(this,controller);
}
//设置返回
@Override
public boolean onSupportNavigateUp() {
//return super.onSupportNavigateUp();
NavController controller = Navigation.findNavController(this,R.id.fragment);
return controller.navigateUp();
}
注意,如果要设置动画效果,在navigation资源xml文件中,导航连接上点击,点右边可以设置

Android Studio 之 Navigation【1.页面之间的切换】的更多相关文章
- Android Studio 之 Navigation【2.数据的传递】
Android Studio 之 Navigation[2.数据的传递和过渡动画] 在资源navigation资源的xml文件中,在[目标界面] detialFragment中点击,在右边 Argum ...
- Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)
前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...
- Android Jetpack - 使用 Navigation 管理页面跳转
在今年的 IO 大会上,发布了一套叫 Android Jetpack 的程序库.Android Jetpack 里的组件大部分我们都接触过了,其中也有一些全新的组件,其中一个就是 Navigation ...
- Android Studio 使用Intent实现页面的跳转(带参数)
不管是在APP,还是在网站中,页面之间的跳转都是很常见的,本文主要讲一下在APP中,如何通过Intent实现页面的跳转. 不带参数: 写在MainActivity页面的代码: Intent inten ...
- Android两个页面之间的切换效果工具类
import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; ...
- android studio 无法在可视化页面预览布局文件
Rendering Problems the following classes could not be found:android.support.v7.internal.widget.Actio ...
- Android Studio之多个Activity的滑动切换(二)
1.因为Android界面上的全部控件一般都位于Layout控件(比方RelativeLayout)之上,而布局控件能够设置响应touch事件,所以能够通过布局控件的setOnTouchListen来 ...
- Android Intent实现页面之间跳转
什么是IntentIntent可以理解为信使(意图)由Intent来协助完成Android各个组件之间的通讯Intent实现页面逐渐的跳转1.startActivity(inetnt)2.startA ...
- Android Studio如何配置CURL指令一键打包apk上传至蒲公英
Android Studio如何配置CURL指令一键打包apk上传至蒲公英 第一步:在所需要打包的模块build.gradle文件中加入如下代码: android{ buildTypes { //配置 ...
随机推荐
- Java如何执行操作系统的CMD命令行
在模拟cmd调用Python时遇到一些情况,这类问题可以归类为"超时,阻塞"等,问题原因: Process p=Runtime.getRuntime().exec(String[] ...
- 《 .NET并发编程实战》阅读指南 - 第1章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- STM32 串口通信基础知识
1.串口通信简介 通信接口的两种方式: 并行通信 -传输原理:数据各个位同时传输. -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输. -优点:占用引脚资源少 -缺点:速 ...
- .net core - 配置管理 - json文件配置
Json 文件配置 public class Startup { public Startup(IHostingEnvironment env) { var builder = new Configu ...
- 【转载】C#中Datatable修改列名
在C#的数据表格DataTable操作过程中,有时候会遇到修改DataTable数据表格的列名的需求,其实C#中的DataTable的列名支持手动修改调整,可以通过DataTable类的Columns ...
- WEB图片水印实现
很多大公司内网都有页面不可见水印,一旦图片截图发送给外部后,可以根据图片不可见水印进行溯源,查出发送人的信息. 原图:(就是下面白色的图片) PS 打开这个图片,在这个图片上新建图层,填充黑色,混合模 ...
- Android 9.0网络权限适配
在做Android开发时,使用华为的p20和平板(均为Android 9.0)测试时,发现不能使用WIFI网络,一番郁闷纠结查找后 直接上方法: 在res文件夹下创建xml文件夹,在xml里面创建文件 ...
- istio部署-快速入门
参考 istio/istio Quick Start Evaluation Install fleeto/sleep fleeto/flaskapp 本文为 istio 快速入门部署,一般用于演示环境 ...
- 转: 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程
http://blog.csdn.net/wangfupeng1988/article/details/46418203
- linux命令:set 指定行,直接替换并修改文件
sed 命令: 指定行,从第一行到第一行: 把该行的ssd,换成cd: -i 表示的是替换并直接修改文件: sed -i '1,1s/ssd/cd/g' test_file 命令使用: sed - ...