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. js 固定div 不随着滚动条滚动

    css .fixed { position: fixed; top:; } javascript function my$(id) { return document.getElementById(i ...

  2. 关于插件Markdown Preview Enhanced的使用技巧

    目录 1.关于TOC 2.关于转义符 3.绘图 3.0 绘图配色主题 3.1 Flowchart(流程图) 3.2 Sequence diagram(顺序图) 3.4 保存为HTML shanzm 1 ...

  3. MySQL UNION 操作符

    本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复 ...

  4. Linq分批次,每组1000条

    /// <summary> /// 分组插入每次插入1000 /// </summary> /// <param name="data">< ...

  5. 聊聊 .net Core webAPi 的Get和POST 相关(1)

    上篇文章,我们试着调用API,成功返回值,今天接下来看看代码是怎么构成的 [Route("api/[controller]")] [ApiController] public cl ...

  6. oracle中如何生成awr【性能调优】报告

    1.进入数据库 sqlplus / as sysdba 2.查看用户 show parameter db_name 3.开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CR ...

  7. 开发技术--浅谈python基础知识

    开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...

  8. cs1.6 8倍镜

    地图名字包含awp的是狙击场 打开游戏 搜索方法 开镜搜减小,关镜搜增加 分析数据 开关镜,观察数据变动 修改测试 测试结果 类似的:鼠标XY坐标,也是上减下加,左加右减

  9. Vue axios异步获取后台数据alert提示undefined

    记录一个小问题,关于分页查询套餐 前台通过axios异步请求获取后台数据alert弹出数据提示undefined 下面有三个bean PageResult /** * 分页结果封装对象 */ publ ...

  10. Django使用Mysql已存在数据表的方法

    在mysql数据库中已经存在有数据的表,自己又不想删除,下面方法可以同步django中创建的表 1.最好将自己建的表名改为前缀和django自动创建表名前缀相同,不改也可以,但是后期表太多容易混乱 2 ...