Android全局变量的定义与使用

Android应用程序开发中,有的时候我们在应用程序的任何一个地方都需要访问一个全局变量,也就是在任何一个Activity中都可以访问的变量。它不会因为Activity的生命周期结束而消失。要实现应用程序级的变量,我们可以通过Application这个类来实现。


class MyApp extends Application {

  private String myState;

  public String getState(){
    return myState;
  }
  public void setState(String s){
    myState = s;
  }
}

class Blah extends Activity {

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

然后再manifest中添加应用:


<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ClickableListItemActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

注意:

不用新建<application />,在原有基础上添加内容:android:name=".your_App_Name"


Application对象只有在应用程序中所有Activity都destroy时才会destrory,所有我们可以在任何一个Activity中访问它。

参考文章:http://androidstudy.iteye.com/blog/776127

http://www.eoeandroid.com/thread-163-1-1.html


一楼:
MyApp appState = ((MyApp)getApplicationContext()); 
这句话错。
应该是:
MyApp appState = ((MyApp)getApplication();

二楼:
一楼是正解,但是还有个问题,class MyApp extends Application 的时候前面缺少“public”,没有public修饰,程序运行时就会报停止运行错误。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android定义全局变量有以下几种方法: 1. 在 Application 类中定义全局变量 可以在自定义的 Application 类中定义全局变量,这样在整个应用程序中都可以访问到该变量。具体的实现步骤如下: - 创建一个继承自 Application 类的自定义类; - 在自定义类中定义一个静态变量; - 在 AndroidManifest.xml 文件中指定自定义类。 示例代码如下: ``` public class MyApplication extends Application { public static int globalVar = 0; } ``` 可以在任何地方通过 `MyApplication.globalVar` 来访问该全局变量。 2. 使用 SharedPreferences 存储全局变量 SharedPreferences 是一种轻量级的数据存储方式,可以用来存储一些简单的全局变量。具体的实现步骤如下: - 获取 SharedPreferences 对象; - 使用 SharedPreferences.Editor 对象保存全局变量; - 在需要访问全局变量的地方获取 SharedPreferences 对象,并通过 key 值获取全局变量。 示例代码如下: ``` public class MyApplication extends Application { private SharedPreferences sharedPreferences; @Override public void onCreate() { super.onCreate(); sharedPreferences = getSharedPreferences("globalVar", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("var1", 0); editor.apply(); } public int getGlobalVar() { return sharedPreferences.getInt("var1", 0); } public void setGlobalVar(int var) { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("var1", var); editor.apply(); } } ``` 可以在任何地方通过 `MyApplication.getInstance().getGlobalVar()` 和 `MyApplication.getInstance().setGlobalVar(var)` 来访问和修改该全局变量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值