Android中Application使用,保存应用程序全局变量
来源:互联网 发布:工程宝软件使用说明 编辑:程序博客网 时间:2024/06/04 08:07
简介
Android各个组件之间(比如activity之间)难免需要访问一些应用程序级的变量,Application对象是一个不错的选择。Application在Android中代表一个应用程序实例,当一个应用程序被启动时,Android平台会为其创建一个Application对象,以代表该应用程序,它可以用来保存一些应用程序级变量(比如微信支付状态),供应用中的各个组件访问。我们可以自定义个个类集成Application,并在其中定义我们的全局变量,这样在应用程序的认可地方就可以访问这些变量了。
示例
功能
我们定义了一个Application类的子类,并在其中定义了一个变量value,在一个activity钟显示此value,在另一个activity中读取并修改此value,返回后在前一个activity可以看到修改后的值。
代码
Application定义
文件com/example/fxgandroid/applicationtest/LocalApplication.java
public class LocalApplication extends Application {
// 测试变量
public String value = "测试变量";
}
// 测试变量
public String value = "测试变量";
}
activity(显示Application value变量值)布局文件及java代码
布局文件res/layout/activity_custom_application.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/application_desc" />
<Button
android:id="@+id/btn_application_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:gravity="center"
android:text="@string/application_show"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/txv_application_value"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_appvalue_reset"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:gravity="center"
android:text="@string/reset_in_activity1"
android:textColor="@android:color/black" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/application_desc" />
<Button
android:id="@+id/btn_application_test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:gravity="center"
android:text="@string/application_show"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/txv_application_value"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_appvalue_reset"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:gravity="center"
android:text="@string/reset_in_activity1"
android:textColor="@android:color/black" />
</LinearLayout>
java代码 com/example/fxgandroid/applicationtest/CustomApplicationActivity.java
public class CustomApplicationActivity extends Activity {
private TextView txvApplicationValue;
private Button btnAppValueReset;
private LocalApplication localApplication;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_application);
// 获取application唯一实例
localApplication = (LocalApplication) getApplication();
//
initView();
initListener();
}
private void initListener() {
btnAppValueReset.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(CustomApplicationActivity.this, ChangeAppValueActivity.class);
startActivity(intent);
}
});
}
private void initView() {
txvApplicationValue = (TextView) findViewById(R.id.txv_application_value);
btnAppValueReset = (Button) findViewById(R.id.btn_appvalue_reset);
}
protected void onResume() {
super.onResume();
// 将application变量值显示在textview中,我们将此值得显示放在 onResume
// 方法中,以便此activity每次显示时都能读取最新的值
String value = localApplication.value;
txvApplicationValue.setText(value);
}
}
private TextView txvApplicationValue;
private Button btnAppValueReset;
private LocalApplication localApplication;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_application);
// 获取application唯一实例
localApplication = (LocalApplication) getApplication();
//
initView();
initListener();
}
private void initListener() {
btnAppValueReset.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(CustomApplicationActivity.this, ChangeAppValueActivity.class);
startActivity(intent);
}
});
}
private void initView() {
txvApplicationValue = (TextView) findViewById(R.id.txv_application_value);
btnAppValueReset = (Button) findViewById(R.id.btn_appvalue_reset);
}
protected void onResume() {
super.onResume();
// 将application变量值显示在textview中,我们将此值得显示放在 onResume
// 方法中,以便此activity每次显示时都能读取最新的值
String value = localApplication.value;
txvApplicationValue.setText(value);
}
}
activity(修改Application value变量值)布局文件及java代码
布局文件 res/layout/activity_change_appvalue.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<TextView
android:id="@+id/txv_application_value"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/edt_application_newvalue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:hint="@string/hint_application_value_reset" />
<Button
android:id="@+id/btn_reset"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/selector_bg_rectangle_gray123"
android:gravity="center"
android:text="@string/application_show"
android:textColor="@android:color/black" />
</LinearLayout>
java代码 com/example/fxgandroid/applicationtest/ChangeAppValueActivity.java
public class ChangeAppValueActivity extends Activity {
private TextView txvApplicationValue;
private EditText edtApplicationNewValue;
private Button btnResetApplicationValue;
private LocalApplication localApplication;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_appvalue);
localApplication = (LocalApplication) getApplication();
initView();
initListenr();
refreshView();
}
private void refreshView() {
txvApplicationValue.setText(localApplication.value);
}
private void initListenr() {
btnResetApplicationValue.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String newValue = edtApplicationNewValue.getText().toString();
localApplication.value = newValue;
refreshView();
}
});
}
private void initView() {
txvApplicationValue = (TextView) findViewById(R.id.txv_application_value);
edtApplicationNewValue = (EditText) findViewById(R.id.edt_application_newvalue);
btnResetApplicationValue = (Button) findViewById(R.id.btn_reset);
}
}
private TextView txvApplicationValue;
private EditText edtApplicationNewValue;
private Button btnResetApplicationValue;
private LocalApplication localApplication;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_appvalue);
localApplication = (LocalApplication) getApplication();
initView();
initListenr();
refreshView();
}
private void refreshView() {
txvApplicationValue.setText(localApplication.value);
}
private void initListenr() {
btnResetApplicationValue.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String newValue = edtApplicationNewValue.getText().toString();
localApplication.value = newValue;
refreshView();
}
});
}
private void initView() {
txvApplicationValue = (TextView) findViewById(R.id.txv_application_value);
edtApplicationNewValue = (EditText) findViewById(R.id.edt_application_newvalue);
btnResetApplicationValue = (Button) findViewById(R.id.btn_reset);
}
}
运行效果
注意
Android官方文档指出:我们通常不需要集成Application类,一个静态的单列既可以实现上述全局变量共享的功能。哈哈,废话了
0 0
- Android中Application使用,保存应用程序全局变量
- 在Android中使用Application保存全局变量
- android 使用Application保存全局变量
- android使用application保存全局变量
- Android学习札记49:在Android中使用Application保存全局变量
- 使用Application类保存全局变量
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android应用程序级全局变量Application
- Android中application 全局变量
- Android中application 全局变量
- android中application 关于全局变量
- android中application 关于全局变量
- android中application 关于全局变量
- Dijkstra总结
- jpa 对 h2数据库的配置
- 好久没看书了,DIV+CSS,我又来了
- android JNI编译注意事项
- Windows 7+VirtualBox安装Mac OS X虚拟机全教程
- Android中Application使用,保存应用程序全局变量
- VC实现随内容改变高度的Edit Control
- VirtualAlloc, HeapAlloc, malloc和new
- iOS 自动布局修改约束
- C#日期时间格式化处理
- 【Darwin学习笔记】之QTSSReflectorModule的Describe消息处理
- error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
- stm32 T型加速控制步进电机
- MVC中显示JS代码格式