Android Studio 之 Navigation【2.数据的传递和过渡动画】

在资源navigation资源的xml文件中,在【目标界面】 detialFragment中点击,在右边 Arguments 中添加参数 name=李江南

添加这个name参数后,在箭头 Action 上点击,会在右边的 Argument 中显示这个name变量

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavController controller = Navigation.findNavController(v); //这样也可以直接导航到 Detial 界面,直接调用这个界面的话,navigation中设置的参数将传递不过来
//这样直接调用的是 my_nav.xml中 detialFragment 中右边设置的参数【李江南】
controller.navigate(R.id.detialFragment); //可以将 navigation 中的参数传递过来
//这样调用,会将 箭头 Action 中设置的参数传递过去【张无忌】
//controller.navigate(R.id.action_homeFragment_to_detialFragment);
}
});
}

  

动态传递参数

HomeFragment.java 文件

package com.example.navigationdemo2;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation; /**
* 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);
getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavController controller = Navigation.findNavController(v); //动态传递参数
EditText editText = getView().findViewById(R.id.editText);
String s = editText.getText().toString();
if(TextUtils.isEmpty(s)){
Toast.makeText(getActivity(), "请输入名字!", Toast.LENGTH_SHORT).show();
return;
} //将参数放在 Bundle 中
Bundle bundle = new Bundle();
bundle.putString("my_name",s);
NavController navController = Navigation.findNavController(v);
controller.navigate(R.id.action_homeFragment_to_detialFragment,bundle);//第2个带参数
}
});
}
}

  

在 DetialFragment.java中接收参数

package com.example.navigationdemo2;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; /**
* 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); TextView textView = getView().findViewById(R.id.textView);
//获取参数【这个参数是在 资源navigation中的detial的fragment中右边参数界面添加的】
String strName = getArguments().getString("name"); //获取动态参数 String my_name = getArguments().getString("my_name");
if(!TextUtils.isEmpty(my_name)) {
textView.setText(my_name);
}
else
{
textView.setText(strName);
} }
}

  

  

Android Studio 之 Navigation【2.数据的传递】的更多相关文章

  1. Android Studio 之 Navigation【1.页面之间的切换】

    1.创建 2个 Fragment ,下面两个include 不要勾 2.创建好 Fragment 后,打开layout中的 fragment.xml 文件,将里面默认的 textView 控件删除掉 ...

  2. 推荐几款实用的Android Studio 插件

    推荐几款实用的Android Studio 插件 泡在网上的日子 发表于 2015-10-09 10:47 第 17453 次阅读 插件,Android Studio 10 编辑推荐:稀土掘金,这是一 ...

  3. Android Studio 优秀插件汇总

    第一部分 插件的介绍 Google 在2013年5月的I/O开发者大会推出了基于IntelliJ IDEA java ide上的Android Studio.AndroidStudio是一个功能齐全的 ...

  4. 拿走不谢!22 个 Android Studio 优秀插件汇总

    Google 在2013年5月的I/O开发者大会推出了基于IntelliJ IDEA java ide上的Android Studio.AndroidStudio是一个功能齐全的开发工具,还提供了第三 ...

  5. android studio 使用adb命令传递文件到android设备

    一:文件传输 在android开发中,有时候需要将文件从pc端传递至android,或者将软件运行的日志,从android设备传递到pc进行分析,我们可以使用windows的cmd窗口,或者andro ...

  6. android中使用Intent在activity之间传递数据

    android中intent传递数据的简单使用: 1.使用intent传递数据: 首先将需要传递的数据放入到intent中 Intent intent = new Intent(MainActivit ...

  7. Android学习之路——Android四大组件之activity(二)数据的传递

    上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据 ...

  8. Android Studio中获取sha1证书指纹数据的方法

    高德地图开发申请KEY的时候需要开发者提供SHA1证书指纹数据,在eclipse很容易就找到了,但是Android Studio很久也没找到,只能使用在网上看到的方法了,在Android Studio ...

  9. 【转】Android 之最新最全的Intent传递数据方法

    原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...

随机推荐

  1. scala中val和var的区别

    1:内容是否可变:val修饰的是不可变的,var修饰是可变的 2:val修饰的变量在编译后类似于java中的中的变量被final修饰 3:lazy修饰符可以修饰变量,但是这个变量必须是val修饰的 p ...

  2. Redis(三)数据类型

    之前的文章中说了Redis的常见应用场景和特性,在特性章节中也大致说了数据结构契合场景.因为我想在更深入.更全面的学习Redis之前,了解场景和特性,才能在学习时更加全面且理解更透彻: redis的什 ...

  3. golang学习笔记---命令源码文件接收参数(flag包)

    命令源码文件怎样接收参数 go标准库中有一个代码包专门用于接收和解析命令参数.这个包叫flag 实例1: package main import ( "flag" "fm ...

  4. Jackson 序列化/反序列化时忽略某属性

    https://www.iteye.com/blog/wwwcomy-2397340 博客分类: Spring jacksonread_onlyjsonignore  基于Spring MVC的RES ...

  5. Java基础笔记之数据类型

    一.数据类型 (一)8种基本数据类型(内置数据类型\C#中为值类型) 字符长度:1byte = 8 bit; 布尔:可认为是 1byte (8 bit);

  6. 新一代ActiveMQ —— Apache ActiveMQ Artemis

    资料: .net demo : https://github.com/apache/activemq-artemis/tree/master/examples/protocols/amqp/dotne ...

  7. 用react-service做状态管理,适用于react、react native

    转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/100713151 . react-service是一个非常简单的用来在react.r ...

  8. contab路径问题(脚本调用另一个文件)

    问题描述 当在定时任务里,要执行一个脚本A,然后A脚本需要调用另一个文件B,此时定时任务执行不成功,会报错找不到文件   解决办法 先cd到放执行脚本的路径,这样就在定时任务的脚本里可以调用相对路径下 ...

  9. Solr缓存原理分析及配置优化

    一.缓存原理 缓存,带来急速性能体验! Solr提供了一系列的内置缓存来优化查询性能.Solr的缓存原理主要涉及以下4个方面: 1.缓存大小及缓存置换法 从缓存大小的角度来看,不能将缓存设置的太大,否 ...

  10. CentOS配置jar应用程序开机启动的方法

    1.背景 某些java程序,我们需要开机,自动启动.... 2.实现步骤 2.1.编写程序启动脚本boot.sh #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NA ...