在android中,如何使一个或多个活动可以使用数组列表?

时间:2012-08-13 10:10:52

标签: android

我有一个名为mylikes的活动,它可以从主活动中调用,然后它应该显示喜欢的项目列表。另一个叫做程序的活动有项目列表,我按下“喜欢”按钮,它应该将该项目添加到喜欢的项目列表中并显示在Mylike活动中。  我在程序活动中将该项添加到数组中但是当我从main调用mylike活动时,我得到强制关闭错误。那么如何使数组列表全局化。

4 个答案:

答案 0 :(得分:3)

您可以使用自己的应用程序类覆盖默认应用程序类,然后从那里创建和使用您的数组。如果您有一个名为MyApplication的应用程序,则添加一个类

public class MyApplication extends Application {

   public ArrayList myGlobalArray = null; 

   public MyApplication() {
      myGlobalArray = new ArrayList(); 
   {

}

然后,您可以通过

之类的内容访问活动
((MyApplication)getApplicationContext()).myGlobalArray ... etc.

在应用程序清单中,您还需要通过将名称添加到应用程序块

来命名扩展的应用程序类
 <application
        android:icon="@drawable/icon"
        android:name=".MyApplication" ...

如果您有一个全局范围的复杂对象,所有活动都需要访问,并且您不希望序列化/反序列化这是最简单的IMO方式,对于更简单的方案,您可以在启动活动时通过将额外的内容添加到项目中来传递项目意图

您也可以使用单身,但应用程序类非常易于管理

我没有测试或编译代码,这只是作为一个概述,所以请注意拼写错误等。

以下是Application类doc Application

的链接

答案 1 :(得分:2)

您可以使用一些singleton类来保存您喜欢的数组,以便通过多个活动共享此列表。

public class LikeManager{
    List<Item> likes;

    //....

    private LikeManager(){
    //...
    }

    public LikeManager getInstance(){
         //...
    }

    public List<Item> getLikes(){
        return likes;
    }
}

因此,当您需要访问likes时,请致电LikeManager.getInstance().getLikes()

答案 2 :(得分:0)

最简单的方法是使公共getter和setter允许应用程序的其他部分检索并设置ArrayList的值。

除此之外,您可以将其写入SharedPreferences,将文件写入某个地方或将数据存储在数据库中。

答案 3 :(得分:0)

您可以使用Application类来存储此数据,并且可以在所有Activity

中使用它
public class BusinessClass extends Application 
{     
     public ArrayList array = new ArrayList();
}

然后使用以下代码在任何活动中调用它

BusinessClass appState = ((BusinessClass)getApplicationContext());
ArrayList myarray=appState.array;

在android中如果你想维护任何全局并在两个或多个活动中共享它,那么你可以使用Application calss。

了解更多信息

http://developer.android.com/reference/android/app/Application.html