如何从不同的活动访问数组?

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】:

对于您的初学者级别,而不是使用意图,只需设置数组对象publicstatic,如下所示:

public static MyAreas[] myArea;

通过这种方式,您可以从应用中的任何活动中访问它..

然后,在您想访问的任何地方转到activity2.java

MyAreas area = Activity.myArea[0];

【讨论】:

【参考方案4】:

这种方法的问题在于,您无法完全控制创建或销毁活动的时间和顺序。活动有时会被销毁并自动重新启动以响应某些事件。所以可能会出现第二个activity先于第一个activity启动,而数据没有初始化的情况。因此,使用由另一个活动初始化的静态变量不是一个好主意。 最好的方法是通过意图传递数据。意图在活动重新启动时被保留,因此数据也将被保留。 另一种方法是使用静态字段来保存数据,并在 Application 实例中初始化数据。

【讨论】:

以上是关于如何从不同的活动访问数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何以角度访问来自不同组件的数组

从适配器类获取不同活动中的 EditText 值

如何从不同的方法访问串口数据

如何从具有不同数据的通知中意图不同的活动?

如何使用 Google 登录从不同的活动中退出用户?

从解析接收通知时如何打开不同的活动