很久没有写android了,最近也是想吧Android重新捡起来,励志成为Android大神。
传入的参数:
findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,OtherActivity.class);
Bundle bundle = new Bundle();
Bundle innerBundle = new Bundle();
innerBundle.putString("name1","humin");
bundle.putString("name","hubin");
bundle.putInt("age",2);
bundle.putBundle("v",innerBundle);
i.putExtras(bundle);
startActivity(i);
}
});
获取参数的方法
Bundle externalBundle = i.getExtras();
tv.setText(String.format("name is %s \n age is %d \n innerBundle data is %s",externalBundle.getString("name"),externalBundle.getInt("age"),externalBundle.getBundle("v").getStrin
以上是基本的传参方法,一下我们来进行序列化传参的方法,也就是
可以自定义数据对象的方法
1 serializable 这个是java平台提供的序列话的方法,优点是集成方便,操作方便只需要定的对象实现它的接口,确定就是对Android的性能比较大,代码如下
package com.hb.object;
import java.io.Serializable;
/**
* Created by hb on 2017/10/26.
*/
public class User implements Serializable
{
private String userName;
private Integer userAge;
public User(String userName,Integer userAge){
this.userName = userName;
this.userAge = userAge;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
传递数据
Intent i = new Intent(MainActivity.this,OtherActivity.class); i.putExtra("user",new User("hb",25));
获取数据
Intent i = getIntent();
User user = (User) i.getSerializableExtra("user");
// Bundle externalBundle = i.getExtras();
// tv.setText(String.format("name is %s \n age is %d \n innerBundle data is %s",externalBundle.getString("name"),externalBundle.getInt("age"),externalBundle.getBundle("v").getString("name","hehe")));
tv.setText(String.format("user info is (name %s age %d)",user.getUserName(),user.getUserAge()));
2 parcelable 这个是android平台提供的对对象序列化提供的方法,优点是损耗的性能低,运行的效率高 缺点是要自己写序列化的方法,代码如下
package com.hb.object;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by hb on 2017/10/26.
*/
//public class User implements Serializable
public class User implements Parcelable
{
private String userName;
private Integer userAge;
public User(String userName,Integer userAge){
this.userName = userName;
this.userAge = userAge;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getUserName());
dest.writeInt(getUserAge());
}
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];
}
};
}
传参前
Intent i = new Intent(MainActivity.this,OtherActivity.class);
// i.putExtra("user",new User("hb",25));
// Bundle bundle = new Bundle();
// Bundle innerBundle = new Bundle();
// innerBundle.putString("name1","humin");
// bundle.putString("name","hubin");
// bundle.putInt("age",2);
// bundle.putBundle("v",innerBundle);
// i.putExtras(bundle);
i.putExtra("user",new User("hb",25));
startActivity(i);
}
传参后
User user = i.getParcelableExtra("user");
// Bundle externalBundle = i.getExtras();
// tv.setText(String.format("name is %s \n age is %d \n innerBundle data is %s",externalBundle.getString("name"),externalBundle.getInt("age"),externalBundle.getBundle("v").getString("name","hehe")));
tv.setText(String.format("user info is (name %s age %d)",user.getUserName(),user.getUserAge()));
// tv.setText(String.format("user info is (name %s age %d)"));