首先看看几个我们需要的三个页面:
主页面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通的Intent跳转"/> <Button android:id="@+id/btn_2" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="有返回值的Intent跳转"/> <TextView android:id="@+id/text_1" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试内容"/> </LinearLayout>
普通要跳转的页面:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.lolli.myapplication.Secend"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="这是第二个页面" android:gravity="center"/> </RelativeLayout>
带返回值跳转的页面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:id="@+id/backContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:hint="请输入回传到上个页面的内容"/> <Button android:id="@+id/backSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="点击关闭当前页面,带值回到上个页面"/> </LinearLayout>
man_acvitity:
(对两个页面进行跳转的按钮做点击事件)
package com.example.lolli.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; /** * Intent两种跳转学习 * 1. 普通跳转 (bt_1) * 2. 带返回值的跳转 (bt_2) */ public class MainActivity extends AppCompatActivity { // 定义控件 private Button bt_1; private Button bt_2; private TextView text_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化控件 bt_1 = (Button) findViewById(R.id.btn_1); bt_2 = (Button) findViewById(R.id.btn_2); text_1 = (TextView) findViewById(R.id.text_1); // 按钮一的点击事件(普通的页面跳转) bt_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, Secend.class); startActivity(intent); } }); // 按钮二的点击事件(带返回值的页面跳转) bt_2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ThirdActivity.class); startActivityForResult(intent, 1); } }); } /** * 设置跳转 接受返回数据 * @param requestCode * 请求码 * @param resultCode * 返回码 * @param data * 返回数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 如果请求码与返回码等于预期设置的值 则进行后续操作 if (requestCode == 1 && resultCode == 2){ // 获取返回的数据 String backData = data.getStringExtra("data"); // 设置给页面的文本TextView显示 text_1.setText(backData); } } }
简单的跳转不多说了,主要是带返回值的跳转,注意startActivityForResult里设置intent跳转的页面和请求码,然后重写onActivityResult方法
再看看跳转页面的activity怎么处理的:
package com.example.lolli.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class ThirdActivity extends AppCompatActivity { private EditText backContext; private Button backSubmit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); // 初始化控件 backContext = (EditText) findViewById(R.id.backContent); backSubmit = (Button) findViewById(R.id.backSubmit); // 设置返回按钮的点击事件 backSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 获取页面输入的内容 String backData = backContext.getText().toString(); // 判断是否填写了内容 if (backData==null || "".equals(backData)){ Toast.makeText(ThirdActivity.this, "请输入要返回的内容", Toast.LENGTH_SHORT).show(); return; } // 设置Intent回调 并设置回调内容 Intent intent = new Intent(); intent.putExtra("data", backData); setResult(2, intent); // 结束当前页面(关闭当前界面) finish(); } }); } }
主要是在setResult方法里设置返回码。再回到main_activity的onActivityResult方法 根据请求码和返回码就能确定请求和返回的唯一对应了。