从一个Activity跳转到另外一个Activity,并且可以带值跳转,但我们日常生活中使用App时会经常遇到这种状况,假设有某个界面A,点击上面不同的按钮会启动不同的界面B、C、D。。。,这些界面会处理某个业务并将处理结果返回给界面A,可以采用带返回值得跳转来实现这功能
Activity带返回值跳转
实现Activity带返回值的跳转,主要通过3个方法:
StartActivityForResult(Intent intent,requestCode):用于启动另一个Activity,并并获取其返回值
参数intent表示意图,用于指定从哪一个界面去获取返回值。
参数requestCode表示请求码,要求大于等于0。
setResult(resultCode,data):用于返回第二个界面处理后的数据
参数resultCode表示返回码,可以用任意的整型值来表示,一般会使用Activity中的常量来表示,RESULT_CANCELED(表示0)、RESULT_OK(表示-1)、RESULT_FIRST_USER(表示1)
参数data表示返回的数据,用Intent对象来存放这些数据。
在设置了返回值后,需要调用finish()方法类销毁当前界面,才能够返回到上一个界面。
OnActivityResult(int requestCode,int resultCode,Intent data):用于处理第二个界面的返回值
用于处理第二个界面的返回值
requestCode就是startActivityForResult方法中的请求码resultCode表示第二个界面的返回码data就是返回的数据。
三个方法的使用介绍
- congdiyige页面跳转到第二个页面时,使用startActivityForResult方法
- 在第二个页面传回数据时,使用setResult方法
- 数据传回来之后使用onActivityResult方法处理数据
代码如下:
MainActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取组件对象
et=(EditText) findViewById(R.id.editText1);
btn=(Button) findViewById(R.id.button1);
//设置监听
btn.setOnClickListener(new OnClickListener() {
//点击事件
@Override
public void onClick(View v) {
//创建意图对象,不要忘记注册SecondActivity
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
//跳转获取返回值 11,表示requestcode
startActivityForResult(intent, 11);
}
});
}
//用于处理第二个界面的返回值
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data!=null){//判断意图是否为空
String str=data.getStringExtra("msg");
if(requestCode==11){
et.setText(str);
}
}
}
}
SecondActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SecondActivity extends Activity {
EditText et;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//获取组件对象
et=(EditText) findViewById(R.id.editText2);
btn=(Button) findViewById(R.id.button2);
//设置监听事件
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {//处理监听事件
Intent intent=new Intent();
//获取输入的数据
String str=et.getText().toString().trim();
//将数据绑定到intent上
intent.putExtra("msg", str);
//回传数据20,为resultCode
setResult(20, intent);
}
});
}
}
activity_main.xml
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="跳转" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="76dp"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:text="第一个界面" />
</RelativeLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="回传" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="81dp"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="18dp"
android:text="第二个界面" />
</RelativeLayout>
结果