当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 中两个Activity 之间的传值问题

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网