注意:特别提醒,官方帮助文档打开太慢,建议使用:http://www.android-doc.com/
一、Activity 的生命周期
二、Activity之间数据的传递
1、传递简单数据
A页面:
findViewById(R.id.newActivity).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent activity = new Intent(MainActivity.this, Main2Activity.class); activity.putExtra("data", "Hello word"); startActivity(activity); } });
B页面:
private TextView textWord;//接受传值Intent newActivity = getIntent();textWord = (TextView) findViewById(R.id.textView2);textWord.setText(newActivity.getStringExtra("data"));
2、数据传递 包Bundle
A页面:
Bundle b = new Bundle(); b.putString("name", "meimei"); b.putInt("age", 23); // activity.putExtras(b); activity.putExtra("data", b);
B页面:
Intent newActivity = getIntent(); // Bundle data = newActivity.getExtras(); Bundle data = newActivity.getBundleExtra("data"); textWord = (TextView) findViewById(R.id.textView2); textWord.setText(data.getString("name"));
3、传递值对象
A、使用implements Serializable 传值(Java 语言自带的序列化) 操作简单,速度较慢
activity.putExtra("user", new User("xiaomi", 23));
User user = (User) newActivity.getSerializableExtra("user"); textWord.setText(user.getName());
B、使用Parcelable传值(操作复杂,Studio支持比较好,速度比较快)
model:
public class User implements Parcelable { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } 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]; } }; }
//接受值
User user = (User) newActivity.getParcelableExtra("user"); textWord.setText(user.getName());
4、获取Activity的返回参数
A、页面:
startActivityForResult(activity, 0);
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); backText = (TextView) findViewById(R.id.textView123); backText.setText(data.getStringExtra("data")); }
B、页面
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(); editText = (EditText) findViewById(R.id.editText2); i.putExtra("data", editText.getText().toString()); setResult(1, i); finish(); } });注意事项:在A页面实现onActivityResult 方法
三、Activity的启动模式
android:launchMode="singleTop"