您的位置:首页 > 移动开发 > Android开发

AndroidStudio学习笔记一:了解Activity

2015-12-08 12:22 453 查看
注意:特别提醒,官方帮助文档打开太慢,建议使用: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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: