android全局变量使用
‘壹’ android Application全局变量
不是啊,你声明在类里面而不是onCreate方法里面就可以在这个Activity中使用。
public class GuessNumberActivity extends Activity {
Button btn1 = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.btn1);
}
//在其他函数中使用
bt1.setOnClickListener(new Button.onClickListener(){.........});
‘贰’ 在Android中如何使用全局变量--Application context (转)
可以将变量存放在Application中,Context,中文直译为“上下文”,SDK中对其说明如下:
Interface to global information about an application environment. This is an abstract class whose implementation
is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls
for application-level operations such as launching activities, broadcasting and receiving intents, etc。
从上可知一下三点即:
1、它描述的是一个应用程序环境的信息,即上下文。
2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。
3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等。
以下为使用Application存储全局变量的示例代码:
1.继承Application,并在Application里声明全局变量。
public class MyApplication extends Application {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
2.在AndroidManifest.xml的application节点中声明这个Application。
<application android:name="com.xxx.xxx.MyApplication">
3.在Activity中获取Application对象,并存取全局变量。
User user = new User();
user.setUserName("example");
MyrApplication app= (MyApplication ) getApplicationContext();
app.setUser(user); //将变量存到application
User tmp = app.getUser();//从application中读取全局变量。
‘叁’ android的全局配置文件是什么,它的作用
Application设置全局变量以及传值
/**
* 重写Application,主要重写里面的onCreate方法,就是创建的时候,
* 我们让它初始化一些值,前段时间在javaeye里面看到过一个例子,与此相似,
* 我做了些改进。听说外国开发者习惯用此初始化一些全局变量,好像在Activity
* 一些类里面初始化全局变量的化,会遇到一些空指针的异常,当然,我没有遇到过。
* 如果用此方法初始化的话,那么就可以避免那些有可能出现的错误。
*
* 启动Application,他就会创建一个PID,就是进程ID,所有的Activity就会在此进程上运行。
* 那么我们在Application创建的时候初始化全局变量,那么是不是所有的Activity都可以拿到这些
* 全局变量,再进一步说,我们在某一个Activity中改变了这些全局变量的值,那么在别的Activity中
* 是不是值就改变了呢,这个算不算传值呢?
* OK,那么下面的例子我们测试下。。。
* @author yong.wang
*
*/
public class MyApplication extends Application {
private String name;
@Override
public void onCreate() {
super.onCreate();
setName(NAME); //初始化全局变量
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private static final String NAME = "MyApplication";
}
//Ok,应用程序创建好了,不过我们应该在配置文件ApplicationManifest.xml中将要运行的应用程序MyApplication加进去,修改下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hisoft.app"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".MyApplication"> 就是这儿,将我们以前一直用的默认Application给他设置成我们自己做的MyApplication
<activity android:name=".MyFirstActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MySecondActivity"></activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
当xml配置文件运行完android:name=".MyApplication">,在此那么就分配好了进程ID,再下面,我们就要运行我们的Activity了
public class MyFirstActivity extends Activity {
private MyApplication app;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (MyApplication) getApplication(); //获得我们的应用程序MyApplication
Log.e("MyFirstActivityOriginal", app.getName()); //将我们放到进程中的全局变量拿出来,看是不是我们曾经设置的值
app.setName("is cool"); //OK,现在我们开始修改了
Log.e("MyFirstActivityChanged", app.getName()); //再看下,这个值改变了没有
Intent intent = new Intent(); //更重要的是我们可以看在别的Activity中是拿到初始化的值,还是修改后的
intent.setClass(this, MySecondActivity.class);
startActivity(intent);
}
}
上面运行完了,就要跳到这个Activity了
public class MySecondActivity extends Activity {
private MyApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (MyApplication) getApplication(); //获取应用程序
Log.e("MySecondActivity", app.getName()); //获取全局值
}
}
‘肆’ android 如何定义全局变量
找到一个和我有类似需求的问题,其下给出了不错的解决方案,也正是我之前想到的,这种方法貌似很方便。 The more general problem you are encountering is how to save stateacross several Activities and all parts of your application. A staticvariable (for instance, a singleton) is a common Java way of achievingthis. I have found however, that a more elegant way in Android is toassociate your state with the Application context. --如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。 As you know, each Activity is also a Context, which is informationabout its execution environment in the broadest sense. Your applicationalso has a context, and Android guarantees that it will exist as asingle instance across your application. --每个Activity 都是Context,其包含了其运行时的一些状态,android保证了其是single instance的。 The way to do this is to create your own subclass of android.app.Application,and then specify that class in the application tag in your manifest.Now Android will automatically create an instance of that class andmake it available for your entire application. You can access it fromany context using the Context.getApplicationContext() method (Activityalso provides a method getApplication() which has the exact sameeffect): --方法是创建一个属于你自己的android.app.Application的子类,然后在manifest中申明一下这个类,这是 android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。
‘伍’ 瀹夊崜镐庝箞鍏ㄥ眬鍙橀噺鏀规満锛屾湁绾㈠寘閰璋
1銆嫔畨瑁厁posed妗嗘灦锛屽畨瑁咃纴閲嶅惎
2銆嬩笅杞鍏ㄥ眬鍙橀噺妯″潡骞跺畨瑁
3銆嬮吨钖涔嫔悗杩涘叆鍏ㄥ眬鍙橀噺 淇鏀规満鍨嬨
‘陆’ Android中gradle文件中${ } 全局变量在哪里定义的
为方便在不同mole中设置版本号等配置信息,可以通过配置全局变量来统一所有mole的公共配置信息。
设置方法一般分为两种:
一、独立文件配置
1.1.在项目的根目录下新建config.gradle文件
1.2.将gradle中的公共信息写入config.gradle文件中:
1.3.在主项目的build.gradle中申明一下:
1.4.在项目中引用我们的路径配置。如下图:
二、在gradle.properties或者local.properties文件中配置
如下为签名配置:
看了觉得也还挺方便的,但是!需要注意的是:因为用到的都是String变量,当需要到Integer变量时,就麻烦点了:
需要用Integer.parseInt();方法对String类型进行转换!
‘柒’ android 鍏ㄥ眬鍙橀噺镐庝箞浣跨敤
鍏ㄥ眬鍙橀噺镐庝箞浣跨敤锛熻存硶澶妯$硦浜嗭纴濡傛灉浣犳槸瑕佸0鏄庝竴涓鍏ㄥ眬鍙橀噺锛屽亣璁炬湁涓涓绫伙纴浣犲彧瑕佸湪绫绘垚锻桦彉閲忓0鏄庡嵆鍙锛屼緥濡傦细鎴戝0鏄庝竴涓猧nt 绫诲瀷镄勫彉閲忎负10锛歱rivate int number=10; 浣犲彲浠ュ湪璇ョ被涓鏂规硶鍐呰皟鐢ㄥ畠锛堟瘆濡傜敤𨱒ュ仛锷犲噺涔橀櫎锛夛纴涔熷彲浠ラ吨鏂拌祴鍊肩粰瀹冿纸number=XX, XX蹇呴’鏄痠nt绫诲瀷锛屽惁鍒椤彲鑳介渶瑕佸己杞锛夈