欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-12 17:14:52
android 中两个activity 之间的传值问题 在android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数...

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 之间的传值问题,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: