Android应用程序中在活动之间传递数据的java
嘿,我对安卓应用程序的开发还很陌生,我知道在两个活动之间传递数据最简单的方法是通过意图
在我的一个类(EventOptions.java)中,我将这行代码称为:
Intent i = new Intent(EventOptions.this, PhotoFetcher.class);
i.putExtra("imageArray", imageIDs);
startActivity(i);
ImageID是一个字符串数组
在我的PhotoFetcher类中,我想将一个名为ImageID的字符串数组设置为我正在传递的ImageID字符串数组
我想在我的类中将图像设置为全局变量:
public class MainActivity extends Activity implements View.OnClickListener{
Intent it = getIntent();
String[] imageIDs = it.getStringArrayExtra("imageArray");
...
}
但这会使我的应用程序崩溃。这是不允许的吗?如果是的话,我该如何修复它?提前谢谢
# 1 楼答案
ρѕρєєK一针见血,你正在运行一种方法,构造函数和字段都在其中。要使变量(ImageID)全局化,非常简单,有几种方法。在任何方法之外声明它们,然后在onCreate或onResume(将始终被调用)中分配它们
试试这个:
# 2 楼答案
在不保存到磁盘的情况下共享数据
考虑到在大多数情况下,两个活动都在同一进程中运行,通过将数据保存在内存中,可以在活动之间共享数据
注意:有时,当用户离开你的活动时(没有退出),Android可能会决定终止你的应用程序。在这种情况下,我遇到过这样的情况:android试图使用应用程序被杀死之前提供的意图启动最后一个活动。在这种情况下,存储在单例(无论是您的还是应用程序)中的数据都将消失,可能会发生不好的事情。为了避免这种情况,您可以将对象持久化到磁盘,或者在使用数据之前检查数据以确保其有效
使用单例类
有一个类来整合数据:
使用应用程序单例(我建议这样做)
应用程序singleton是android的一个实例。应用程序。应用程序启动时创建的应用程序。您可以通过扩展应用程序来提供自定义应用程序:
在开展活动之前:
然后,从启动的活动中:
# 3 楼答案
你必须使用
putStringArrayListExtra
。可以先将字符串[]转换为ArrayList像这样
然后,你可以像以前一样获取它,最好是在
onCreate
或者在那次调用之后