利用intent返回數(shù)據(jù)給上一級activity
2018-05-08_154146.jpg
activity間數(shù)據(jù)傳遞的逐虚,不但可以把數(shù)據(jù)從一個activity傳給下一個activity焦履,也可以從下一級的activity返還給上一級的activity叠纹。
目的:
單擊按鈕啟動下一級的activity蜡歹,從下級的activity返還文本框的值在上級通過Toast顯示夺艰。
步驟:
1黄痪、創(chuàng)建Activity名:FirthActivity。
2见秽、FirthActivity中添加文本框控件和一個按鈕愉烙。用于返還輸入的字符
<EditText
android:id="@+id/editview_1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:hint="@string/firth_editview"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp"
android:text="@string/button_send"
android:textAllCaps="false"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editview_1" />
3、在FirthActivity添加代碼
創(chuàng)建按鈕的單擊事件张吉,從EditView取得文本轉換成字符串齿梁,放入intent。
intent=new Intent();
intent.putExtra("data_return",mEditView.getText().toString());
setResult(RESULT_OK,intent);
finish();
4肮蛹、在FirstActivity中創(chuàng)建按鈕Button6
<Button
android:id="@+id/button_6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button_6"
android:textAllCaps="false"/>
2勺择、在代碼里給按鈕添加事件監(jiān)聽。
intent=new Intent(FirstActivity.this,FirthActivity.class);
startActivityForResult(intent,1);
3伦忠、重載onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String requeltdata=data.getStringExtra("data_return");
Toast.makeText(FirstActivity.this,requeltdata,Toast.LENGTH_LONG).show();
}
break;
default:
}
}
要點:
1省核、啟動下一級avtivity采用startActivityForResult()方法。能得到返回的intent昆码。
需要指定一個返回標志气忠,可以任意指定。
2赋咽、要取得下一級的avtivity返回的intent里封裝的數(shù)據(jù)旧噪,需要重載onActivityResult()。
根據(jù)返回碼和標志脓匿,用intent.tgetStringExtra()取出數(shù)據(jù)淘钟。
3、下一級avtivity里的數(shù)據(jù)用intent.putExtra()方法放入intent陪毡,然后用setResult()返還intent米母。