Android学习笔记--通过Application传递数据代码示例
程序员文章站
2023-08-12 19:02:42
在整个android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过...
在整个android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过j2ee的都应该知道javaweb的四个作用域,其中application域在应用程序的任何地方都可以使用和访问,除非是web服务器停止,android中的全局对象非常类似于javaweb中的application域,除非是android应用程序清除内存,否则全局对象将一直可以访问。
在启动application时,系统会创建一个pid,即进程id,所有的activity就会在此主进程上运行。所以,在同一application中所有的activity都可以通过activity.getapplication()方法获取到同一个application对象,继承application类,即可访问自定义数据。
简单来说,使用application传递数据步骤如下:
创建新class,取名myapp,继承android.app.application父类,并在myapp中定义需要保存的属性,如:用户名,用户类型。
在activity中,通过activity.getapplication()方法获取到myapp对象(需要强制转换),对其数据进行操作。
修改androidmanifest.xml文件中的application节点的android:name属性(android:name=".myapp")。
代码示例
步骤一:
public class myapp extends application {
private string name;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
@override
public void oncreate() {
// todo auto-generated method stub
super.oncreate();
setname("dick");
}
}
步骤二:
public class mainactivity extends activity {
private button btn;
private myapp myapp;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
btn=(button)this.findviewbyid(r.id.btn);
btn.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
// todo auto-generated method stub
myapp=(myapp)getapplication();
myapp.setname("jack");
intent intent=new intent(mainactivity.this, otheractivity.class);
startactivity(intent);
}
});
}
}
步骤三:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.bgxt.staticchuandi"
android:versioncode="1"
android:versionname="1.0" >
<uses-sdk
android:minsdkversion="8"
android:targetsdkversion="17" />
<application
android:name=".myapp"
android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/apptheme" >
<activity
android:name="cn.bgxt.staticchuandi.mainactivity"
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=".otheractivity"/>
</application>
</manifest>
在启动application时,系统会创建一个pid,即进程id,所有的activity就会在此主进程上运行。所以,在同一application中所有的activity都可以通过activity.getapplication()方法获取到同一个application对象,继承application类,即可访问自定义数据。
简单来说,使用application传递数据步骤如下:
创建新class,取名myapp,继承android.app.application父类,并在myapp中定义需要保存的属性,如:用户名,用户类型。
在activity中,通过activity.getapplication()方法获取到myapp对象(需要强制转换),对其数据进行操作。
修改androidmanifest.xml文件中的application节点的android:name属性(android:name=".myapp")。
代码示例
步骤一:
复制代码 代码如下:
public class myapp extends application {
private string name;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
@override
public void oncreate() {
// todo auto-generated method stub
super.oncreate();
setname("dick");
}
}
步骤二:
复制代码 代码如下:
public class mainactivity extends activity {
private button btn;
private myapp myapp;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
btn=(button)this.findviewbyid(r.id.btn);
btn.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
// todo auto-generated method stub
myapp=(myapp)getapplication();
myapp.setname("jack");
intent intent=new intent(mainactivity.this, otheractivity.class);
startactivity(intent);
}
});
}
}
步骤三:
复制代码 代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.bgxt.staticchuandi"
android:versioncode="1"
android:versionname="1.0" >
<uses-sdk
android:minsdkversion="8"
android:targetsdkversion="17" />
<application
android:name=".myapp"
android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/apptheme" >
<activity
android:name="cn.bgxt.staticchuandi.mainactivity"
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=".otheractivity"/>
</application>
</manifest>
上一篇: 韭菜馅饺子的做法是什么
下一篇: 这样才好!白虾怎么做好吃?