引言:
对《第一行代码》第二版第二章内容进行总结,这里总结2.1-2.3,重点放在2.3
1.显示intent:
利用显示intent启动一个活动:
Intent intent=new Intent(mContext, SwustMovieCommentsActivity.class);
mContext.startActivity(intent);
携带数据给下一个活动:
intent.putExtra("mData", mData); //传递一个对象
intent.putExtra("keyBoard",false); //传递一个布尔值
获取携带的数据:
movieData=(MovieListBean)getIntent().getSerializableExtra("mData"); //获取对象
keyBoard=getIntent().getBooleanExtra("keyBoard",false); //获取基本数据类型,后面一个参数为默认值。
2.隐式intent:
AndroidManifest.xml文件中为活动添加intent-filter标签,即过滤器:
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.mine2" />
<!-- 当且仅当含有DEFAULT的category的活动才能隐式启动-->
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.mine2" />
</intent-filter>
</activity>
java代码中
Intent intent=new Intent();
intent.setAction("android.intent.action.mine2");
intent.addCategory("android.intent.category.mine2");
mContext.startActivity(intent);
3.startActivityForResult:
作用:
此方法可以用于启动一个活动,并且从被启动的活动中返回数据到启动方活动
用法:
首先,在启动方调用startActivityForResult这个方法:
Intent intent=new Intent(mContext, SwustMovieCommentsActivity.class);
mContext.startActivityForResult(intent,1);
就是常规的创建一个Intent,只不过,启动的时候调用startActivityForResult,多传入了一个参数,requestCode,这个参数与回调方法onActivityResult的requestCode参数是对应的。
注意我这里的mContext其实就是一个Activity的引用。
然后,在接收方:
@Override
public void onBackPressed() {
Intent intent=new Intent();
if(flag){
intent.putExtra("data_return",1);
}else{
intent.putExtra("data_return",0);
}
setResult(RESULT_OK,intent);
super.onBackPressed();
}
创建一个Intent,并且附带上我们要返回的值,调用setResult方法传入intent,实现回调。
温馨提示:如果你也是在onBackPressed中实现回调,务必在调用父类onBackPressed之前实现回调,否则会回调失败。
最后,在启动方获取数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.w("MovieList","ActivityResult:"+requestCode+" "+resultCode);
if(requestCode==1&&resultCode==RESULT_OK){
if (data != null) {
int value=data.getIntExtra("data_return",0);
if(value==1){
onRefresh();
}
}
}
}
4.拓展:
书毕竟会过时,况且《第一行代码》第二版本身就是基于Android7.0版本写的,对于7.0以上安卓不太适用,想学到最新最全面的知识,还是得看:官方文档