Android中Activity跳转过程中的反向传值

在Android编程中,我们有时会遇到一种业务是,由AActivity跳转到BActivity,在BActivity销毁时,BActivity中的相关数据会传到AActivity中
  • Android中Activity跳转过程中的反向传值:
    如何实现?
    由AActivity启动BActivity,然后再BActivity
    finish()之后,把相关的数据回传给AActivity.
    并且在AActivity中执行后续操作.

  • 1>
    AActivity:
    启动BActivity需要使用下列方法:
    startActivityForResult(intent)

  • 2>
    BActivity:
    执行完业务,finish时,调用下列方法给AActivity回传数据:
    setResult(intent)

  • 3>
    在AActivity中重写父类的方法:
    onActivityResult(),一旦BActivity销毁,那么
    将会自动执行onActivityResult方法,并且获取
    BActivity回传的intent对象.

下面我们就用一个小的Dome具体介绍一下吧
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"
    tools:context="com.example.androd_text_dome.MainActivity" >

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/btn_get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="doClick"
        android:layout_below="@+id/et1"
        android:layout_centerHorizontal="true"
        android:text="获取数据" />

</RelativeLayout>



效果如图所示

这里写图片描述

activity_second.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="com.example.androd_text_dome.SecondActivity" >

    <TextView
        android:id="@+id/tv_content"
        android:onClick="doClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你好,我是你想要 的数据哦" />

</RelativeLayout>

如图所示

这里写图片描述

MainActivity中代码如下

package com.example.androd_text_dome;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {

    private EditText etContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控制
        etContent =(EditText) findViewById(R.id.et1);

    }

    public void doClick(View view){
        switch (view.getId()) {
        case R.id.btn_get:
            Intent intent = new Intent(this, SecondActivity.class);
            int requestCode = 101;//请求码,可以随意写,只要和OnActivityResult中的请求码想对应就行
            startActivityForResult(intent , requestCode);
            break;

        default:
            break;
        }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case 101:
            if(resultCode == Activity.RESULT_OK){
                String content = data.getStringExtra("content");
                etContent.setText(content);
            }
            break;
        }
    }

}


SecondActivity代码如下

package com.example.androd_text_dome;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public class SecondActivity extends Activity {
    private TextView tvContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        tvContent = (TextView) findViewById(R.id.tv_content);
        tvContent.setClickable(true);

    }

    public void doClick(View view){
        Intent data = new Intent();
        data.putExtra("content", tvContent.getText().toString());
        setResult(Activity.RESULT_OK, data);
        finish();
    }

}

SecondActivity销毁之后,将会自动执行onActivityResult方法,并且获取
SecondActivity回传的intent对象.

点击按钮得到的结果如图所示

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值