引言:
對《第一行代碼》第二版第二章內容進行總結,這裏總結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以上安卓不太適用,想學到最新最全面的知識,還是得看:官方文檔