利用intent返回数据给上一级activity
activity间数据传递的,不但可以把数据从一个activity传给下一个activity,也可以从下一级的activity返还给上一级的activity。
目的:
单击按钮启动下一级的activity,从下级的activity返还文本框的值在上级通过Toast显示。
步骤:
1、创建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添加代码
创建按钮的单击事件,从EditView取得文本转换成字符串,放入intent。
intent=new Intent();
intent.putExtra("data_return",mEditView.getText().toString());
setResult(RESULT_OK,intent);
finish();
4、在FirstActivity中创建按钮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、在代码里给按钮添加事件监听。
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里封装的数据,需要重载onActivityResult()。
根据返回码和标志,用intent.tgetStringExtra()取出数据。
3、下一级avtivity里的数据用intent.putExtra()方法放入intent,然后用setResult()返还intent。