activity跳转&传参

一.跳转到另一个网页上

new Intent(Intent .ACTION_VIEW,Uri.parse(“http://baidu.com“))

二.跳转到另一个activity

Intent i = new Intent(MainActivity.this,AnotherAty.class); //从当前上下文跳转到anotherAty.class

情况一:传字符串
源activity中:
i.putExtra(“data”,”Hello”); //传递一个名称为data的字符串,字符串内容是hello
startActivity(i);
目的activity中:
Intent i = getIntent();
i.getStringExtra(“data”);//得到名称为data的字符串

情况二:传数据包
源activity中:
Bundle b = new Bundle();
b.putString(“name”,”lily”);
b.putInt(“age”,”2”);
i.putExtra(b);
startActivity(i);
目的activity中:
Intent i = getIntent();
Bundle data = i.getExtras();//得到名称为data的字符串
data.getString(“name”,”unknown”);第二个参数的意思是name的默认值,在找不到name的情况下
data.getString(“age”,”22”);

情况三:传递值对象
Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。
public class User {
private String name;
private int age;
public User (String name ,int age ) {
this.name = name;
this.age = age;
}
//age、name的get和set方法
}

1.Serializable
首先,User 类实现Serializable接口
public class User implements Serializable {
}
然后源activity中:
i.putExtra(“user”,new User(“lily”,18));
startActivity(i);
目的activity中:
Intent i = getIntent();
User user =(User )i.getSerializableExtra();//得到user对象
user.getName();
data.getAge();

2.Parcelable
implements Parcelable,重写writeToParcel方法,将你的对象序列化为一个Parcel对象;重写describeContents方法,内容接口描述,默认返回0就可以;实例化静态内部对象CREATOR实现接口Parcelable.Creator
public int describeContents()
{
return 0;
}

public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(getName());
dest.writeInt(getAge());
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
{
public User createFromParcel(Parcel source)
{
return new User(source.readString(),source.readInt() );//数据类型不重复时,重复时用bundle
}

public User[] newArray(int size)
{
return new User[size];
}
};

然后源activity中:
i.putExtra(“user”,new User(“lily”,18));
startActivity(i);
目的activity中:
Intent i = getIntent();
User user =(User )i.getParcelable Extra();//得到user对象
user.getName();
data.getAge();

情况四:获取activity的返回值
源activity中:
startActivityForResult(i,0);
重写onActivityResult方法
i.getStringExtra(“data”);

目的activity中:
Intent i = getIntent();
i.putExtra(“data”,”hhh”)
setResult(1,i);
finish();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值