博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Intent传递数据
阅读量:6251 次
发布时间:2019-06-22

本文共 2256 字,大约阅读时间需要 7 分钟。

刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据.

我们利用显示的方式进行Intent的启动.

1.启动intent并输入数据.

Intent intent=new Intent(MainActivity.this,TwoActivity.class                    );            intent.putExtra("data", "hello two");            startActivity(intent);

2.接收数据.

Intent intent=getIntent();        Log.i("data", intent.getStringExtra("data"));

注.intent传递数据的方式是键值对的形式,所以我们要根据预键来取.这里我们传递的是一个String字符串,当然你也可以传递其他数据类型.不过取的时候我们要根据数据类型来使用不同方法取.如下(当然还有很多,以此类推).

intent.getIntExtra(name, defaultValue);        intent.getBooleanExtra(name, defaultValue);

3.返回数据

Intent intent1=new Intent(MainActivity.this,TwoActivity.class                    );                        intent1.putExtra("data", "hello two");            startActivityForResult(intent1, 1);

在这里我们使用的不是startActivity();而是startActivityForResult();,这是我们要返回数据,所以必须要一个用来识别返回数据的code.

Intent intent=getIntent();        data=intent.getStringExtra("data");        Log.i("data", data);        findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(                ) {                        @Override            public void onClick(View v) {                Intent intent=new Intent();                intent.putExtra("data1", data+"收到.");                setResult(RESULT_OK, intent);                finish();            }        });

接收并返回数据.setResult(RESULT_OK, intent);.然后我们使用finish();将当前的activity销毁掉,返回上一个activity.

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode==1) {            if (resultCode == RESULT_OK) {                Log.i("data1", data.getStringExtra("data1"));            }        }        super.onActivityResult(requestCode, resultCode, data);    }

最后我们重写onActivityResult();方法,并判断requestCode是否等于我们预先设定好的code,和resultCode是否等于RESULT_OK.


在onActivityResult();方法里带有三个参数,分别是requestCode,我们在启动活动时传入的请求码.resultCode,我们在返回数据时候传入的处理结果.data,携带着返回数据的intent.

此外我们还有一个问题,如果我们不是通过预先设定好的按钮返回上一个activity,而是通过back按键返回怎么办?

@Override    public void onBackPressed() {        Intent intent=new Intent();        intent.putExtra("data1", data+"收到.");        setResult(RESULT_OK, intent);        finish();    }

这个时候我们可以通过重写onBackPressed(); 方法来解决.这样的话当我们按下back按键,就会去执行onBackPressed();方法中的代码.

么么哒的效果图 o.o 792475-20151217152137334-925324085.png

转载于:https://www.cnblogs.com/stareblankly/p/5054288.html

你可能感兴趣的文章
react--1.创建项目
查看>>
C++ 与OpenCV 学习笔记
查看>>
【CV学习7】FAST算法详解
查看>>
11月20日学习内容整理:jquery插件
查看>>
预科班第四次考核总结
查看>>
【js】再谈移动端的模态框实现
查看>>
html
查看>>
Java变量类型
查看>>
[leetcode-89-Gray Code]
查看>>
mysql 存储过程的基本语法知识
查看>>
数据分析师到底在做什么?
查看>>
pt-heartbeat工具监控MySQL复制延迟
查看>>
指尖下的js —— 多触式web前端开发之三:处理复杂手势(转)
查看>>
spring boot项目配置文件集合
查看>>
cube-ui的用法
查看>>
2015.4.21 SetWindowPos函数用法
查看>>
2011-12-14 调用cmd并获得输入输出+网络访问
查看>>
解决nim db_mysql could not load: libmysql.dll的问题
查看>>
JavaScript之再谈回调与闭包
查看>>
优化PHP代码的一些建议
查看>>