如何从不同的活动访问数组?
Posted
技术标签:
【中文标题】如何从不同的活动访问数组?【英文标题】:How to access array from different activity? 【发布时间】:2021-11-21 16:27:27 【问题描述】:是的,我真的是 android 新手,我正在开发一个非常简单的应用程序。 在我的 mainActivity 上,我正在创建数组,并希望从不同的活动访问数组。
public class Activity extends
MyAreas[] myArea;
@Override
protected void onCreate(Bundle savedInstanceState)
myArea= new MyAreas[2];
myArea[0] = new MyAreas(33, 44, "Location ", "active");
myArea[1] = new MyAreas(32, 434, "Location 2", "active");
类
public class MyAreas
public double val;
public double val2;
public String name;
public String status;
public MyAreas(double val, double val2, String name, String status)
this.val= val;
this.val2= val2;
this.name = name;
this.status = status;
我正在尝试从我的 activity2.java 访问 myarea 数组,我尝试过但没有成功。
private ArrayList<MyAreas> mMyAreasList;
【问题讨论】:
【参考方案1】:使用 Parcelable 在 Activity 之间传递数据
Here 是应该有帮助的答案。
【讨论】:
【参考方案2】:在常规 Java 中,您可以使用 getter 从不同的类中获取对象或任何变量。这是一篇关于encapsulation.的好文章
在 Android 中,有一个名为 Intent 的类,可让您从另一个活动启动一个活动并将任何必要的信息传递给它。看看developer docs 和其他answer 应该对你有帮助。
【讨论】:
【参考方案3】:对于您的初学者级别,而不是使用意图,只需设置数组对象public
和static
,如下所示:
public static MyAreas[] myArea;
通过这种方式,您可以从应用中的任何活动中访问它..
然后,在您想访问的任何地方转到activity2.java
。
MyAreas area = Activity.myArea[0];
【讨论】:
【参考方案4】:这种方法的问题在于,您无法完全控制创建或销毁活动的时间和顺序。活动有时会被销毁并自动重新启动以响应某些事件。所以可能会出现第二个activity先于第一个activity启动,而数据没有初始化的情况。因此,使用由另一个活动初始化的静态变量不是一个好主意。 最好的方法是通过意图传递数据。意图在活动重新启动时被保留,因此数据也将被保留。 另一种方法是使用静态字段来保存数据,并在 Application 实例中初始化数据。
【讨论】:
以上是关于如何从不同的活动访问数组?的主要内容,如果未能解决你的问题,请参考以下文章