Activity 组件认识
- 启动Activity
- 启动另一个Activity
- 通过Action启动
findViewById(R.id.btnGo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 启动 new Activity
// startActivity(new Intent(MainActivity.this,Main2Activity.class));
// 启动一个 Action
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")));
}
});
- 怎样在多个Activity之间传递参数
- 传递简单的数据
- 传递复杂的数据
- 传递自定义值对象
- 传递返回值
MainActivity
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
// 传递自定义对象 使用Parcelable
UserInfo info = new UserInfo("playgame");
intent.putExtra("detail",info);
// 传递自定义对象,使用Serializable
MoreInfo moreInfo = new MoreInfo("luo");
intent.putExtra("family",moreInfo);
// 复杂数据
Bundle bundle = new Bundle();
bundle.putString("name","xuqi");
bundle.putInt("age", 28);
intent.putExtra("info", bundle);
// 简单数据
intent.putExtra("msg","hello");
// 启动 new Activity
// startActivity(intent);
startActivityForResult(intent,2);
}
MainActivity2
final Intent intent = getIntent();
// 取复杂数据
String name = intent.getExtras().getBundle("info").getString("name");
// 取简单的数据对象
String msg = intent.getExtras().getString("msg");
// 取自定义的数据对象
UserInfo detail = intent.getParcelableExtra("detail");
MoreInfo familyInfo = (MoreInfo) intent.getSerializableExtra("family");
((TextView) findViewById(R.id.tvMsg)).setText(msg + "\n" + name + "\n" + detail.getFavorite() + "\n" + familyInfo.getWife());
findViewById(R.id.btBack).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent();
intent1.putExtra("returninfo","nihao");
setResult(1, intent1);
finish();
}
});
UserInfo
public class UserInfo implements Parcelable{
public String getFavorite() {
return favorite;
}
public void setFavorite(String favorite) {
this.favorite = favorite;
}
private String favorite;
public UserInfo(String fav) {
this.favorite = fav;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getFavorite());
}
public static final Creator<UserInfo> CREATOR = new Creator<UserInfo>() {
@Override
public UserInfo createFromParcel(Parcel source) {
return new UserInfo(source.readString());
}
@Override
public UserInfo[] newArray(int size) {
return new UserInfo[size];
}
};
}