android intent参数是上次的结果,【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动...

1.0 可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目。

新建活动FirstActivity,勾选“Generate Layout File”和“Launcher Activity”。

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

修改AndroidMainifest.xml中的内容:

android:name=".FirstActivity"

android:label="第一个活动">

在布局文件activity_first.xml增减一个按钮:<?xml  version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".FirstActivity">

android:id="@+id/button_1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按钮1"

/>

显示Intent调用,FirstActivity .java:package com.example.hellotest01;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class FirstActivity extends AppCompatActivity {    @Override

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_first);

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(new View.OnClickListener() {            @Override

public void onClick(View v) {

String data = "你好,活动二";

Intent intent = new Intent(FirstActivity.this,SencondActivity.class);//                intent提供一系列的putExtra()方法重载//                第一个参数是键,方便目标活动接收时取值,第二个参数才是真正传递的数据。

intent.putExtra("extra_data",data);

startActivity(intent);

}

});

}

}

新建活动SencondActivity,勾选“Generate Layout File”。

SencondActivity.java(负责接收,并用debug.d 打印):package com.example.hellotest01;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class SencondActivity extends AppCompatActivity {    @Override

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent intent = getIntent();

String data = intent.getStringExtra("extra_data");

Log.d("**********活动二**********",data);

}

}

运行:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

2.0 返回数据刚给上一个活动

新建活动ThirdActivity,勾选“Generate Layout File”。

由于之前忘了给新建的活动SecondActivity和ThirdActivity弄个名字,这里修改AndroidMainifest.xml中的内容补上:

android:label="第三个活动">

android:label="第二个活动"/>

给活动FhirdActivity布局增加一个Button,activity_third.xml:<?xml  version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".ThirdActivity">

android:id="@+id/button_3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按钮3" />

SecondActivity.java(说明解释都在源代码里面):package com.example.hellotest01;import android.content.Intent;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class SencondActivity extends AppCompatActivity {    @Override

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent intent = getIntent();

String data = intent.getStringExtra("extra_data");

Log.d("**********活动二**********", data);

Button button2 = (Button) findViewById(R.id.button_2);

button2.setOnClickListener(new View.OnClickListener() {            @Override

public void onClick(View v) {

String data = "你好,活动三";

Intent intent = new Intent(SencondActivity.this, ThirdActivity.class);//                用startActivityForResult启动活动ThirdActivity,请求码只需要一个唯一值即可,这里传入1

startActivityForResult(intent, 1);

}

});

}    //    在活动ThirdActivity被销毁之后会回调上一个活动的onActivityResult()方法,//    因此我们需要在活动SencondActivity中重写这个方法来得到返回的数据

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {        //onActivityResult() 方法带有三个参数//        requestCode  在启动活动中传入的请求码//        resultCode   在返回数据时传入的处理结果//        data         携带着返回数据的Intent//        由于在一个活动中有可能调用onActivityResult()方法去启动很多不同的活动//        每一个活动返回的数据都会调用onActivityResult()方法,//        因此我们需要做的是检查requestCode的值来判断数据来源,确定数据是从ThirdActivity返回之后,//        再通过resultCode的值来判断处理结果是否成功//        最后从data中取值并进行数据操作。

switch (requestCode) {            case 1:                if (resultCode == RESULT_OK) {

String returnedData = data.getStringExtra("data_return");

Log.d("**********返回数据为**********", returnedData);

}                break;            default:

}

}

}

ThirdActivity.java(说明解释都在源代码里面):package com.example.hellotest01;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class ThirdActivity extends AppCompatActivity {    @Override

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button button3 = (Button) findViewById(R.id.button_3);

button3.setOnClickListener(new View.OnClickListener() {            @Override

public void onClick(View v) {//                新建一个启动器,不过只用来传递数据而已,没有任何意图

Intent intent = new Intent();

intent.putExtra("data_return", "你好,活动二");//                setResult()方法专门用于返回上一个为活动数据的//                第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK和RESULT_CANCELED这两个值//                第二个参数则把带有数据的Intent传递回去,然后调用finish()方法销毁当前活动

setResult(RESULT_OK, intent);

finish();

}

});

}

}

完毕,运行,因为就创建活动FirstActivity为主活动,所以需要一个个点过去,按钮一 按钮二 按钮三:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

3.0 当然,这样有个缺点,如果用户不是通过点击按钮,而是通过Back键(手机上的后撤/返回键)会到的活动SecondActivity,这样数据无法返回,解决方案:

在ThirdActivity.java中重写onBackPressed()方法来解决:package com.example.hellotest01;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class ThirdActivity extends AppCompatActivity {    @Override

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button button3 = (Button) findViewById(R.id.button_3);

button3.setOnClickListener(new View.OnClickListener() {            @Override

public void onClick(View v) {//                新建一个启动器,不过只用来传递数据而已,没有任何意图

Intent intent = new Intent();

intent.putExtra("data_return", "你好,活动二,button");//                setResult()方法专门用于返回上一个为活动数据的//                第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK和RESULT_CANCELED这两个值//                第二个参数则把带有数据的Intent传递回去,然后调用finish()方法销毁当前活动

setResult(RESULT_OK, intent);

finish();

}

});

}    @Override

public void onBackPressed() {

Intent intent = new Intent();

intent.putExtra("data_return","你好,活动二,back");

setResult(RESULT_OK,intent);

finish();

}

}

运行,点击:按钮一 按钮二 按钮三,这时候回到“活动二”界面,再按下“按钮二”,这时候点击“Back键”:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

作者:我睡醒刚刚

链接:https://www.jianshu.com/p/9b409e5f54df

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实习一年算工作一年吗?_经过一年的努力,我如何找到软件工程工作

实习一年算工作一年吗?by Andrew Ngo通过安德鲁恩戈 经过一年的努力&#xff0c;我如何找到软件工程工作 (How I landed a software engineering job after a year of hard work) Many of us think the path to becoming a software engineer requires years of education an…

学习深度学习需要哪些知识_您想了解的有关深度学习的所有知识

学习深度学习需要哪些知识有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) Corona was a huge challenge for many of us and affected our lives in a variety of ways. I have been teaching a class on Deep Learning at Friedrich-Alexander-University Erlan…

参加开发竞赛遇到的问题【总结】

等比赛完就写。 转载于:https://www.cnblogs.com/jiangyuanjia/p/11261978.html

html5--3.16 button元素

html5--3.16 button元素 学习要点 掌握button元素的使用button元素 用来建立一个按钮从功能上来说&#xff0c;与input元素建立的按钮相同button元素是双标签&#xff0c;其内部可以配置图片与文字&#xff0c;进行更复杂的样式设计不仅可以在表单中使用&#xff0c;还可以在其…

如何注册鸿蒙id,鸿蒙系统真机调试证书 和 设备ID获取

鸿蒙系统真机调试创建项目创建项目创建应用创建鸿蒙应用(注意&#xff0c;测试阶段需要发邮件申请即可)关联应用项目进入关联 添加引用准备调试使用的 p12 和证书请求 csr使用以下命令// 别名"test"可以修改&#xff0c;但必须前后一致&#xff0c;密码请自行修改key…

Java—实现 IOC 功能的简单 Spring 框架

编写一个实现 IOC 功能的简单 Spring 框架&#xff0c;包含对象注册、对象管理、及暴 露给外部获取对象的功能&#xff0c;并编写测试程序。扩展注册器的方式&#xff0c;要求采用 XML 和 txt 文件。 源代码 package myspring;import java.lang.reflect.Method; import java.…

读zepto核心源码学习JS笔记(3)--zepto.init()

上篇已经讲解了zepto.init()的几种情况,这篇就继续记录这几种情况下的具体分析. 1. 首先是第一种情况,selector为空 既然是反向分析,那我们先看看这句话的代码; if (!selector) return zepto.Z() 这里的返回值为zepto.Z();那我们继续往上找zepto.Z()函数 zepto.Z function(dom…

css flexbox模型_Flexbox和CSS Grid之间的主要区别

css flexbox模型by Shaira Williams由莎拉威廉姆斯(Shaira Williams) Flexbox和CSS Grid之间的主要区别 (The main differences between Flexbox and CSS Grid) Dimensions define the primary demarcation between Flexbox and CSS Grid. Flexbox was designed specifically …

置信区间估计 预测区间估计_估计,预测和预测

置信区间估计 预测区间估计Estimation implies finding the optimal parameter using historical data whereas prediction uses the data to compute the random value of the unseen data.估计意味着使用历史数据找到最佳参数&#xff0c;而预测则使用该数据来计算未见数据的…

鸿蒙系统还会推出吗,华为明年所有自研设备都升级鸿蒙系统,还会推出基于鸿蒙系统的新机...

不负期许&#xff0c;华为鸿蒙OS手机版如期而至。今日(12月15日)&#xff0c;鸿蒙OS 2.0手机开发者Beta版本正式上线&#xff0c;支持运行安卓应用&#xff0c;P40、Mate 30系列可申请公测。国内媒体报道称&#xff0c;华为消费者业务软件部副总裁杨海松表示&#xff0c;按照目…

C#中将DLL文件打包到EXE文件

1&#xff1a;在工程目录增加dll目录&#xff0c;然后将dll文件复制到此目录&#xff0c;例如&#xff1a; 2&#xff1a;增加引用&#xff0c;定位到工程的dll目录&#xff0c;选中要增加的dll文件 3&#xff1a;修改dll文件夹下面的dll文件属性 选中嵌入式资源&#xff0c;不…

PopupMenu控件的使用

1、用PopupMenu控件能进行右键菜单的实现&#xff0c;它的实现还需要绑定到barManager控件上&#xff0c;在barManager的Customize中添加右键所需要显示的功能。 2、PopupMenu属性栏中绑定Manager为barManager&#xff1b; 3、窗体加载事件中创建 this.popupMenu1.AddItems(new…

Java—动态代理

动态代理利用了JDK API&#xff0c;动态地在内存中构建代理对象&#xff0c;从而实现对目标对象的代理功能。动态代理又被称为JDK代理或接口代理。 静态代理与动态代理的区别主要在&#xff1a; 静态代理在编译时就已经实现&#xff0c;编译完成后代理类是一个实际的class文件…

Oracle VM Virtual Box的安装

安装Oracle VM Virtual Box安装扩展插件 选择"管理""全局设定" 在设置对话框中&#xff0c;选择"扩展" 选择"添加包" 找到"Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361"&#xff0c;点击"打开" 5&#x…

python 移动平均线_Python中的SMA(短期移动平均线)

python 移动平均线With the evolution of technology rapidly evolving, so do strategies in the stock market. In this post, I’ll go over how I created a SMA(Short Moving Average) strategy.随着技术的飞速发展&#xff0c;股票市场的策略也在不断发展。 在本文中&…

angular中的href=unsafe:我该怎么摆脱你的溺爱!!

解决方法&#xff1a;angular.module加入下面这行&#xff1a;&#xff08;依据Angular changes urls to “unsafe:” in extension page&#xff09; .config(function($compileProvider){//注:有些版本的angularjs为$compileProvider.urlSanitizationWhitelist(/^\s*(https?…

android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

如何在Android中利用 GestureDetector进行手势检测发布时间&#xff1a;2020-11-26 16:15:21来源&#xff1a;亿速云阅读&#xff1a;92作者&#xff1a;Leah今天就跟大家聊聊有关如何在Android中利用 GestureDetector进行手势检测&#xff0c;可能很多人都不太了解&#xff0c…

Ubuntu2204配置samba

0.前情说明 samba服务器主要是用来局域网共享文件的&#xff0c;如果想公网共享可能行不通&#xff0c;我已经踩坑一天了 所以说如果你想满足公网samba共享你就可以不要看下去了 1.参考连接 Ubuntu 安装 Samba 服务器_ubuntu安装samba服务器-CSDN博客 2.安装samba服务 sud…

Java—BIO模型

利用 BIO 模型&#xff08;传统阻塞 IO 模型&#xff09;实现多用户访问 源代码 Server类 public class server {public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(6);try {ServerSocket serverSocketnew ServerSocke…

c++学编程如何锻炼耐力_我如何学习编程:这是一项耐力运动

c学编程如何锻炼耐力by Amy M Haddad通过艾米M哈达德(Amy M Haddad) 我如何学习编程&#xff1a;这是一项耐力运动 (How I’m learning to program: it’s an endurance sport) 为什么我的编程学习轨迹反映了我作为跑步者的训练方式 (Why my learning trajectory for programm…