androidactivity数据
㈠ 如何android多Activity间共享数据
方法1:在某个Activity中声明一个公共的static变量把共享数据作为静态变量
1
2
3
4
5
6
7
8
9
10
public class OneActivity extends Activity {
public static Data data = null;//声明的变量
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new Data();
}
}
1
2
3
4
5
6
7
public class TwoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Data data = OneActivity.data;
}
但是这样会增加activity之间的耦合度,不是很好
方法二:把共享数据作为放在Applicaiton中
定义一个MyApplication继承于Application
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyApplication extends Application{
private Data data;
@Override
public void onCreate() {
super.onCreate();
data = new Data();
}
public Data getData(){
return data;
}
public void setData(Data data){
this.data = data;
}
}
将MyApplication配置到清单文件中作为程序启动的ApplicationContext
设置Application的name属性即可
在Activity中获取数据
1
2
3
4
5
6
7
8
9
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication application = (MyApplication) getApplication();
Data data = application.getData();
}
}
㈡ 如何android多Activity间共享数据
方法1:在某个Activity中声明一个公共的static变量把共享数据作为静态变量
java">{
publicstaticDatadata=null;//声明的变量
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data=newData();
}
}
{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Datadata=OneActivity.data;
}
但是这样会增加activity之间的耦合度,不是很好
方法二:把共享数据作为放在Applicaiton中
定义一个MyApplication继承于Application
{
privateDatadata;
@Override
publicvoidonCreate(){
super.onCreate();
data=newData();
}
publicDatagetData(){
returndata;
}
publicvoidsetData(Datadata){
this.data=data;
}
}
将MyApplication配置到清单文件中作为程序启动的ApplicationContext
设置Application的name属性即可
在Activity中获取数据
{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplicationapplication=(MyApplication)getApplication();
Datadata=application.getData();
}
}
㈢ android activity之间怎么传对象数据
StartActivity的时候将数据携带到Intent的bundle里,如果要携带自定义的对象,你自定义的对象要实现Serializable接口,就是在类里加一个implement Serializable。
然后
Intent intent = new Intent(this, Activity2);
Bundle bundle = new Bundle();
bundle.putSerializable("参数名", 自定义对象);
intent.putExtras(bundle);
startActivity(intent);
就可以把参数带过去了,
取的时候用
getIntent().getSerializableExtra("参数名")
就可以取到你传过来的对象了
强转一下类型就能用了
㈣ 如何在Android开发中activity之间数据传递
android各组件之间可以使用Intent来传递数据, 这里以ActivityA向ActivityB传递数据为例
Intentintent=newIntent(context,ActivityB.class);
//如果context上下文不是Activity的话,需要添加下面这个flag,
if(!(contextinstanceofActivity)){
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
//添加要传递的数据
//这里的key到时候ActivityB会用来得到value
//android要求可以传递的数据类型包括基本数据类型,
//基本数据类型的数组,CharSequence,以及实现了Parcelable的对象
//putExtra是重载方法,根据value的类型会适当的打包进intent的Bundle对象里
intent.putExtra(key,value);
//或则将数据打包进Bundledata里,然后intent.putExtras(data);
context.startActivity(intent);
在ActivityB中
publicvoidonCreate(BundlesavedInstanceState){
//得到传递过来的数据
Bundlebundle=getIntent().getExtras();
//通过getXXX方法来获取key对应的value
bundle.getXXX(key);
}
㈤ Android开发中 Activity中数据、状态的保存
1.若是向数据库中插入数据,保存持久化数据的操作时应放在onpause()中.
protected
void
onpause(){…..
}
2.若保存ui控件的状态,
成员变量的值等应放在onsaveinstancestate()中
protected
void
onsaveinstancestate(bundle
outstate)
{....
}