Android 中Activity 之间传递参数
作者:一人一城_Qian 发布时间:2022-09-06 04:29:20
标签:Android,Activity,传参
Android 中Activity 之间传递参数
1.传递简单数据
在A Activity中
findViewById(R.id.startBActicityBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,TheActivity.class);
// 对基础的数据类型进行传递
i.putExtra("data","我是国人");
startActivity(i);
}
});
在B Activity中接受数据
tv =(TextView)findViewById(R.id.TheTextView);
Intent i = getIntent();
tv.setText(i.getStringExtra("data"));
这种传值就是传递基本的数据类型
2.传递数据 包Bundle
在A Activity中
findViewById(R.id.startBActicityBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,TheActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name","qll");
bundle.putInt("age",3);
// i.putExtras(bundle);
// 另种传递方式
i.putExtra("data",bundle);
startActivity(i);
}
});
}
在B Activity中接受数据
tv =(TextView)findViewById(R.id.TheTextView);
editText = (EditText) findViewById(R.id.editText3);
Intent i = getIntent();
// Bundle date = i.getExtras();
// 接受方式不同
Bundle date = i.getBundleExtra("data");
tv.setText(String.format("name=%s,age=%d",date.getString("name"),date.getInt("age")));
这总传递方式类似iOS中传递字典数据类型过来 。
3.传递值对象
自定义一个User类,传递自定义类需要对类进行序列化
用Serializable进行序列化
这种方法只需要类实现Serializable接口就可以了
User 类
import java.io.Serializable;
public class User implements Serializable{
private String name;
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public User(String name,int age){
this.name = name;
this.age = age;
}
在A Activity中
findViewById(R.id.startBActicityBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,TheActivity.class);
i.putExtra("user",new User("qll",24));
startActivity(i);
}
});
}
在B Activity中
tv =(TextView)findViewById(R.id.TheTextView);
User user = (User)i.getSerializableExtra("user");
tv.setText(String.format("user info(name=%s,age=%d)",user.getName(),user.getAge()));
用Parcelable实现
同样的需要实现Parcelable接口
User 类
package com.example.wyhaiapple.transferdata1;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.ParcelableSpan;
public class User implements Parcelable{
private String name;
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public User(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getName());
dest.writeInt(getAge());
}
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel source) {
return new User(source.readString(),source.readInt());
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
在A Activity中 与上面的相同
在B Activity中
tv =(TextView)findViewById(R.id.TheTextView);
User user = (User)i.getParcelableExtra("user");
tv.setText(String.format("user info(name=%s,age=%d)",user.getName(),user.getAge()));
4.获取 Activity 的返回参数
在B Activity中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_the);
tv =(TextView)findViewById(R.id.TheTextView);
editText = (EditText) findViewById(R.id.editText3);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent();
i.putExtra("data",editText.getText().toString());
setResult(1,i);
finish();
}
});
}
}
在A Activity中
startActivityForResult(i,0);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText("返回的值:"+data.getStringExtra("data"));
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://www.jianshu.com/p/a3c2be98894f
0
投稿
猜你喜欢
- 前言众所周知,encache是现在最流行的java开源缓存框架,配置简单,结构清晰,功能强大。通过注解 @Cacheable 可以快速添加方
- 这篇文章主要介绍了Javaweb实现在线人数统计代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 记录自己用java swing做的第一个简易界面。LoginAction.javapackage com.QQUI0819;import j
- 创建新的项目的时候,文件名一直追加,不分层对于刚用idea的小白,这个问题困扰了我好几天了,幸好现在还不怎么敲代码,下面给一个详细的解决方案
- 前言大家都知道类的继承规则:1、派生类自动包含基类的所有成员。但对于基类的私有成员,派生类虽然继承了,但是不能在派生类中访问。2、所有的类都
- 返回json格式数据时间格式配置数据库里面查出来的时间是时间错格式,前段需要处理才能展示相应的格式,自己一个个转的话太麻烦,所以可以在apl
- 今天在做项目的时候突然遇到一个问题:启动服务器的时候spring没报错,可是当我访问某个页面的时候spring报Request bean i
- 要将一个对象序列化,可是如果对象的属性为null的时候,我们想将属性为null的都去掉。在这里我使用Newtonsoft.Json.dll记
- Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。在Spring开发中经常涉及调用各种资源的情况,包含
- 1、多个线程对同一个队列进行读写操作,要注意进行读写控制,某个线程在读取的时候,不允许其它线程读、写;某个线程在写的时候,不允许其它线程进行
- 问题springboot 集成springcloud时常常由于版本问题而报错,如下:com.sun.jersey.api.client.Cl
- 前面讲了 Spock框架Mock对象方法经验总结一、静态方法Mock静态方法我们使用PowerMock结合Mockito的方案,首先在测试类
- 介绍POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI可以操作的文档格式有excel,word,p
- 本文所述实例实现将一张图片上传到指定的文件夹,然后在窗体上的PictrueBox控件中显示出来。具体功能代码如下:private void
- 前言:先写个简单的地点签到功能,如果日后有时间细写的话,会更加好好研究一下百度地图api,做更多逻辑判断。这里主要是调用百度地图中的场景定位
- Class.forName(xxx.xx.xx) 返回的是一个类一.首先你要明白在java里面任何class都要装载在虚拟机上才能运行。1.
- 接口介绍:识别超过9千种菜品,支持客户创建属于自己的菜品图库,可准确识别图片中的菜品名称、位置、卡路里信息,并获取百科信息,适用于多种客户识
- 1.用法\t 表示制表符,相当于制表符前面的输出内容位数为8的倍数,\t将输出8个空格前面的输出内容位数不是8的倍数,\t将补足8位2.测试
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- 最近在写我们大三项目的一个视频文件上传的页面,实现后台对上传的进度进行监听,然后将监听的信息返回给前台页面。前台的页面效果图:前台进度条控件