Android 四大组件之 Activity-带值跳转

从一个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就是返回的数据。
三个方法的使用介绍

  1. congdiyige页面跳转到第二个页面时,使用startActivityForResult方法
  2. 在第二个页面传回数据时,使用setResult方法
  3. 数据传回来之后使用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>

结果
这里写图片描述
这里写图片描述
这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值