返回上一个活动只需要按以下Back键就可以了,并且使用startActivityForResult(),这个方法也是用于启动活动的,而且会返回一个结果给上一个活动。
startActivityForResult()方法接收两个参数,第一个参数是Intent,第二个参数是请求码,用于在之后回调中判断数据的来源。
以下为例子:
首先你需要两个可以互传的Activity ,这里,我们以MainActivity和SecondActivity为例:
MainActivity的Layout如下:<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff"
tools:context=".MainActivity">
android:id="@+id/edt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:minLines="3"
android:maxLines="3"
android:textColor="#000000"
android:textSize="20dp"
android:hint="请输入.."
android:textColorHint="#707070"/>
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击"
android:textSize="15dp"
android:textColor="#000000"/>
android:id="@+id/txt_first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="变变变"
android:textColor="#000000"
android:textSize="20dp"
android:layout_marginTop="10dp"/>
SecondActivity的Layout如下:<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
tools:context=".SecondActivity">
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="#000000"/>
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="#000000"
android:text="点吧"
android:layout_marginTop="10dp"/>
接着,我们要让SecondActivity在点击了按钮btn_1之后返回数据到MainActivity:import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SearchView;
import android.widget.TextView;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class MainActivity extends AppCompatActivity {
private EditText edt;
private Button btn;
private TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt = findViewById(R.id.edt);
btn = findViewById(R.id.btn);
txt = findViewById(R.id.txt_first);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data = edt.getText().toString() ;
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
case 1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra("return_data");
txt.setText(returnedData);
}
break;
default:
}
}
}
然后是SecondActivity的代码:import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
private TextView txt2;
private Button btn_2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
String data= intent.getStringExtra("extra_data");
txt2 = findViewById(R.id.txt);
btn_2=findViewById(R.id.btn_1);
txt2.setText(data);
btn_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SecondActivity.this,MainActivity.class);
intent.putExtra("return_data","This is the return of Second Activity.");
setResult(RESULT_OK,intent);
finish();
}
});
}
}