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

来源:互联网 发布:网络世界大战视频 编辑:程序博客网 时间:2024/05/17 09:15

在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对象.

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

这里写图片描述

0 0
原创粉丝点击