广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    android不同activity之间共享数据解决方法

    2018-04-03 22:30:53 次阅读 稿源:互联网
    广告
    最近做局域网socket连接问题,要在多个activity之间公用一个socket连接,就在网上搜了下资料,感觉还是application方法好用,帖出来分享下!
    Android中在不同Activity中传递变量,通常使用Intent中Bundle添加变量的操作方法。
    保存参数时:
    代码如下:

    Intent intent = new Intent();
    intent.setClass(A.this, B.class);
    Bundle bundle = new Bundle();
    bundle.putString("name", "xiaozhu");
    intent.putExtras(bundle);
    startActivity(intent);

    读取参数:
    代码如下:

    Intent intent = this.getIntent();
    Bundle bundle = intent.getExtras();
    String name = bundle.getString("name");
    [java] view plaincopy
    Intent intent = this.getIntent();
    Bundle bundle = intent.getExtras();
    String name = bundle.getString("name");

    不过在多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。
    如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。
    新建一个类,继承自Application
    代码如下:

    class MyApp extends Application {
    private String myState;
    public String getState() {
    return myState;
    }
    public void setState(String s) {
    myState = s;
    }
    }

    在AndroidManifest.xml的application加个name属性就可以了,如下面所示:
    代码如下:

    <application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">

    使用时:
    代码如下:

    class Blah extends Activity {
    @Override
    public void onCreate(Bundle b){
    ...
    MyApp appState = ((MyApp)getApplicationContext());
    String state = appState.getState();
    ...
    }
    }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告