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

日报2015/10/11(极客学院安卓视频学习)

2015-10-11 12:41 302 查看
在 Activity 跳转过程中的生命周期

总结了一下:

从A跳到B,A
onPause()
后不会马上执行
onStop()
,而是要等到

B
onCreate(),onStart(),onResume()
之后再执行
onStop()


若是B没有完全遮挡住A,例如B是一个dialog的话,
onStop()
便不会执行了。

在 Activity 之间传递参数

从MainActivity通过Intent跳转到B,需要

new Intent(MainActivity.this,B.class)


而B中可以通过
getIntent()
来取得它们之间这个桥梁
Intent
,并且取到保存的键值对参数。

Bundle对象获取字符串的时候有一个重载的方法:

getString("键名","若不存在时的默认值")


这样若是Bundle中没有这个key的value,则取出的是默认值。

与Intent对应的取值:

putExtra("key",Bundle)
getBundleExtra("key")


putExtras(Bundle)
getExtras()


传递值对象

如果不对对象进行任何处理,那么

intent.putExtra("user",new User("jackie",21));


所以,应该对实体对象进行处理:两种方式

1、implements Serializable


A:
intent.putExtra("user",new User("jackie",21));


B:
intent.getSerializableExtra("user");//此处注意是Serializable


2、implements Parcelable


User类要重写两个方法,其中

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}


parcelable
没有自动序列化的机制需要我们手动实现,如上

另外,还要在User里写一个

public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}

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


A:
intent.putExtra("user",new User("jackie",21));


B:
intent.getParcelableExtra("user");//此处注意是Parcelable


后者是安卓为开发者提供的序列化方法,不使用系统序列化机制,速度较快,虽然操作复杂了些。

获取 Activity 的返回参数

在B的按钮处:使用
setResult()
方法,并且新声明一个intent

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("BName",editText.getText().toString());
setResult(1,intent);
}
});


而在A中,要想接收到返回值就不能通过
startActivity(intent);


要使用
startActivityForResult(intent,0);//0表示一种两者交互的行为


并且A中要重写一个方法来对返回数据进行处理

onActivityResult(int requestCode, int resultCode, Intent data)


这里的data就是B中返回的那个intent,那么通过它就能取到B中EditText的值

String name=data.getStringExtra("BName");
textView.setText(name);


也就是说关键在于(限于幅面参数省略)

A:
startActivityForResult()
,
onActivityResult()


B:
setResult();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息