Android 中两个Activity 之间的传值问题

Android 中两个Activity 之间的传值问题

在Android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数据。

但是我们知道,在Java中全局静态变量(java中没有全局变量这一个概念,但是java提供了public static关键字来实现一些类似于全局变量的关键字)都是在程序加载时就放人到内存中,它是存储在方法区里的。如果程序不结束,它将一直存在。这是会影响到系统的性能的。那么在android中可不可以不通过这种方式来传递值呢?

今天自己做了一个小demo,感觉还不错:不通过全局静态变量而实现两个Activity之间传递数据。

一个SendActivity(保存数据的一方,或者是传递数据的一方),一个ReceiverActivity(使用数据的一方)为了简单起见,每个Activity对应的布局文件中都只有一个按钮。

SendActivity的java代码

public class SendActivity extends Activity { 

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_send); 

    //获取按钮对象
    Button btnSendButton = (Button)findViewById(R.id.btnSend);
    btnSendButton.setOnClickListener(new OnClickListener() {
      public void onClick(View v) { 

        Intent intent = new Intent();
        //第一参数取的是这个应用程序的Context,生命周期是整个应用
        //第二个参数是要跳转的页面的全路径
        intent.setClassName( getApplicationContext(), "com.example.testofdialog.ReceiveActivity" );
        //Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值
        Bundle b = new Bundle();
        b.putString("我是key", "这里就是你要传递的内容了");
        //此处使用putExtras,接受方就响应的使用getExtra
        intent.putExtras( b );
        startActivity(intent);
        // 关闭当前页面
        System.exit(0);
        //无论是exit还是finish都是可以的
        //SendActivity.this.finish(); 

      }
    }); 

  }
}

ReceiveActivity的java代码

public class ReceiveActivity extends Activity { 

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_receive); 

    Button btnReceiveButton = (Button)findViewById(R.id.btnReceive);
    btnReceiveButton.setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
        //最后的参数一定要和发送方的相同,否则得到空值
        String rString = getIntent().getExtras().getString("我是key"); 

        Toast.makeText(ReceiveActivity.this, rString, Toast.LENGTH_SHORT).show();
      }
    });
  }
}

这里只是介绍了两个Activity之间的通过Intent传值的,那么如果有三个Activity是依次显示的,但是,第三个Activity需要用到第一个Activity中的值,这种方法是否还能够发挥功效?是否还有其他更好的方法?

以上就是Android 两个Activity 之间的传值问题,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android开发中Activity创建跳转及传值的方法

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider). 今天所介绍的就是Android开发中的四大组件之一:Activity,其他那三大组件以后再进行介绍.说道Android中的Activity,如果你做过iOS开发的话,Activity类似于iOS中的ViewController(视图控制器).在应用中能看到的东西都是放在活动中的.活动是安卓开发比较重要的东

  • Android 多个Activity之间的传值

    下面是主Activity的代码: 开发:Activity之间的传值 - 51CTO.COM 复制代码 代码如下: package com.chaoyang.activity; import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.style.BulletSpan;import android.view.View;import android.wi

  • Android学习笔记--Activity中使用Intent传值示例代码

    Intent,又称为意图,是一种运行时绑定机制,它能在程序运行的过程中链接两个不同的组件(Activity.Service.BroadcastReceiver).通过Intent,程序可以向Android表达某种请求或意愿,Android会根据意愿的内容选择适当的组件来请求. 在这些组件之间的通讯中,主要是由Intent协助完成的.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,

  • Android Activity的跳转与传值详解

    Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是"意图",什么是意图呢?比如你想从这个Activity跳转到另外一个Activity,这就是一个意图.Intent类在Android系统中的作用很大,在此不详细说了,后面有文章介绍! Activity跳转,无返回结果 这是最简单的Activity跳转方式.从一个Activity启动

  • Android学习笔记--使用剪切板在Activity中传值示例代码

    在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统中也存在此技术. 使用剪切板会用到,ClipboardManager对象,这个对用剪切板会用到,ClipboardManager象用来操作剪切板,但是没有提供public的构造函数(单例模式),需要使用Activity.getSystemService(Context.CL

  • Android 中两个Activity 之间的传值问题

    Android 中两个Activity 之间的传值问题 在Android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数据. 但是我们知道,在Java中全局静态变量(java中没有全局变量这一个概念,但是java提供了public static关键字来实现一些类似于全局变量的关键字)都是在程序加载时就放人到内存中,它是存储在方法区里的.如果程序不结束,它将一直存在.这是会影响到系统的性能的.那么在android中可不可以不通过这种方式来传递值呢?

  • Android中两个Activity之间数据传递及返回问题

    下面通过一个例子来详细说明 先上代码,再细细分析 MainActivity public class MainActivity extends Activity { private Button mainBtn=null; private final static int REQUEST_CODE=1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInst

  • Android开发两个activity之间传值示例详解

    目录 使用Inten的putExtra传递 使用Intention的Bundle传递 使用Activity销毁时传递数据 SharedPreferences传递数据 使用序列化对象Seriazable 使用静态变量传递数据 handler 使用Inten的putExtra传递 第一个Activity中 //创建意图对象 Intent intent = new Intent(this,MainActivity2.class); //设置传递键值对 intent.putExtra("name&quo

  • Android中fragment与activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<详解Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragmen

  • Android中Service与Activity之间通信的几种方式

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介绍两种方式来实现Service与Activity之间的通信问题 1.通过Binder对象 当Activity通

  • Android编程实现两个Activity之间共享数据及互相访问的方法

    本文实例讲述了Android编程实现两个Activity之间共享数据及互相访问的方法.分享给大家供大家参考,具体如下: 本人从windows编程转过来学习Android开发,一直在想如果两个Activity之间能够像C#或delphi中的Form一样,可以直接访问其成员(字符.数值.成员对象等),并能调用其公开的方法,那应该比用Intent来传递数据直接方便的多,于是偿试了如下办法,测试基本没有问题,发出来大家讨论一下.本人学习android不久,幼稚的地方希望大家不要见笑 原理:假设有两个Ac

  • Android传递Bitmap对象在两个Activity之间

    通过内部存储方式实现了在两个Activity之间传递Bitmap对象以及其它支持串行化的Java对象,关键点有如下: 1.  HTTP客户端下载图片,通过ImageView对象显示 2.  把ImageView上的Bitmap对象从当前Activity传递到另外一个Activity中并显示出来 3.  基于串行化传递Java对象数据 首先看我是怎么实现HTTP客户端下载图片,通过异步Task接口实现HTTP客户端下载图片并通过Handler来更新ImageView,代码如下: package c

  • python开发中两个list之间传值示例

    由于改代码因为这个问题卡了半个小时特此记录 首先对于一个单层的列表 赋值如下,可以看见,如果直接使用 = 的话.其中一个变换便会引起另外一个变换,这时因为这两个list被python解释的时候使用的相同的地址,如下面输出的 id()中的内容,所以此时如果想让一个列表接收到另外一个列表的值,并且在接收到值后不会因为其中任意一个值的改变而改变,这时候就需要使用copy方法,这里可以解释成,当使用了copy方法后,python单独创建了找个一个内存区的地址放了新的那个值. a = [ 1,2,3] b

  • Android入门之在Activity之间穿梭的Intent

    目录 概述 1. 显式 Intent 2. 隐式 Intent 使用 Intent 传递数据 1. 向下一个 Activity 传递数据 2. 返回数据给上一个 Activity 概述 Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据 Intent 大致可分为两种:显式 Intent 和隐式 Intent 1. 显式 Intent Intent 有多个构造函数的重载,其中一个是 Intent(Contex

随机推荐