Android -- Activity接收另一个Activity返回的数据

当我们在一个A(Activity)跳转到另外一个B(Activity)时,再由B返回A时,A如何接受返回的数据。

我们在B页面加了一个输入框和按钮,当输入数据,点击按钮返回信息到A页面,先来看B页面Activity代码

package com.example.testapp;

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

public class BMainActivity extends Activity {

    private TextView t;
    private EditText t1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bmain);
        t = (TextView) findViewById(R.id.tv);
        Intent i = getIntent();
        // User user = (User) i.getSerializableExtra("user");
        User user = (User) i.getParcelableExtra("user");
        t.setText("name=" + user.getName() + ",age=" + user.getAge());

        t1 = (EditText) findViewById(R.id.editText1);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.putExtra("data", t1.getText().toString());
                setResult(1, i);
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.bmain, menu);
        return true;
    }

}

代码中为按钮增加一个事件,并使用setResult方法返回Intent对象,然后调用finish方法

点击按钮后返回到A页面(这个按钮是如何定位上一个页面的还在调研…)

A的Activity代码如下

package com.example.testapp;

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

public class AMainActivity extends Activity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_amain);

        editText = (EditText) findViewById(R.id.editText1);

        findViewById(R.id.button1).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i = new Intent(AMainActivity.this,
                                BMainActivity.class);
                        i.putExtra("user", new User("lijingwei", 25));
//                      startActivity(i);
                        startActivityForResult(i, 0);
                    }
                });
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);

        editText.setText(data.getStringExtra("data"));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.amain, menu);
        return true;
    }

}

注意,我们将startActivity(i)改成了startActivityForResult(i,0),并且重写了protected void onActivityResult(int requestCode, int resultCode, Intent data)方法。用来接收B返回的数据。

时间: 2024-07-28 16:26:18

Android -- Activity接收另一个Activity返回的数据的相关文章

Android 判断当前Activity是不是最后一个Activity 以及 应用或Activity是否存在

判断当前Activity是最后一个Activity: 在Activity的方法中, 有一个方法isTaskRoot()方法, 这个方法可以判断当前Activity是否是最后一个Activity, 如果是, 用户再按一次返回键就退出应用, 否则回到上一个仍然活动的Activity; 代码如下: @Override public void onBackPressed() { if (isTaskRoot()) { Toast.makeText(mContext, "当前activity是该应用唯一

一个Activity调用另一个Activity的非静态方法

注意:前提是界面二被打开过未关闭,则用此方法即可实现在界面一中调用界面二的方法! 界面一: public class OneActivity extends Activity { @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_one); callTwoActivityMethod(); } /

防抖与节流 & 若每个请求必须发送,如何平滑地获取最后一个接口返回的数据

博客地址:https://ainyi.com/79 日常浏览网页中,在进行窗口的 resize.scroll 或者重复点击某按钮发送请求,此时事件处理函数或者接口调用的频率若无限制,则会加重浏览器的负担,界面可能显示有误,服务端也可能出问题,导致用户体验非常糟糕 此时可以采用 debounce(防抖)和 throttle(节流)的方式来减少事件或接口的调用频率,同时又能实现预期效果 防抖:将几次操作合并为一此操作进行.原理是维护一个计时器,规定在 delay 时间后触发函数,但是在 delay

Android 从一个Activity向另一个Activity传递一个对象

在Android中经常需要从一个Activtity向另外一个Activity传递数值或对象. 首先要有一个类,这个类必须去implement Serializable;代码如下 public class Student implements Serializable{ String name; } 在第一个Activity中把这个对象当作一个值放在intent中进行传递,代码如下 Intent intent = new Intent(MainActivity.this,SecondActivit

【起航计划 007】2015 起航计划 Android APIDemo的魔鬼步伐 06 App->Activity->Forwarding Activity启动另外一个Activity finish()方法

Android应用可以包含多个Activity,某个Activity可以启动另外的Activity. 这些Activity采用栈结构来管理,新打开的Activity叠放在当前的Activity之上,当前的Activity停止运行. 当一个Activity停止运行时,Android系统保留其停止前的状态,当用户按下“Back”按键时,栈最上的Activity从栈顶退栈,之前的Activity移到栈顶,显示在屏幕上: 有些时候,当一个Activity启动新的Activity后,不希望把当前Activ

Android train——启动另一个Activity并传入message

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.train.openso.myapplication_a" > <application android:allowB

Andriod:一个Activity向另一个Activity传递数据

假设现在有两个Activity:A与B,A要向B传递数据. 首先要创建两个Activity:Android:当前Activity跳转到另一个Activity A启动B: intent = new Intent(ActivityA.this,ActivityB.class); startActivity(intent); A启动B 并向B传递数据 多了一行 绑定数据 intent = new Intent(ActivityA.this,ActivityB.class); intent.putExt

【安卓面试题】在一个Activity启动另一个Activity和在Service中启动一个Activity有什么区别

在Activity中可以直接使用Intent启动另一个Activity 显式Intent intent = new Intent(context, activity.class) 隐式 Intent intent = new Intent(“com.aa.www.act”); startActivity(intent); 如果从Service中用同样方法启动Activity 的话,会报错: android.util.AndroidRuntimeException: Calling startAc

【Android】Android如何一进入一个activity就弹出输入法键盘

在AndroidManife.xml中的Activity配置中加入 android:windowSoftInputMode="stateVisible|adjustResize"