活动之间的全球数据

时间:2016-05-23 07:39:44

标签: android

我有一个活动,显示产品列表和详细视图,我可以在其中编辑这些产品。我想从两个活动中访问相同的产品列表。

如何在这些多项活动之间存储/使用此全局数据?

2 个答案:

答案 0 :(得分:2)

您可能希望使用Singleton设计模式:创建一个类并将其限制为只有一个包含产品列表的实例。之后,从您的两个活动中访问此实例和相同的列表:

    // singleton Manager
public class ProductManager {
    private static ProductManager sInstance;
    private List<Product> mProducts;

    // private constructor to limit new instance creation
    private ProductManager() {
        // may be empty
    }

    public static ProductManager getInstance() {
        if (sInstance == null) {
            sInstance = new ProductManager();
        }
        return sInstance;
    }

    public List<Product> getProducts() {
        return new ArrayList<>(mProducts);
    }

    // add logic to fill the Products list
    public void setProducts(List<Product> products) {
        mProducts = new ArrayList<>(products);
    }
}

稍后从两个活动中访问它:

MyListActivity.java:

// set products once you get them
ProductManager.getInstance().setProducts(yourProductsList);
// ...

DetailsActivity.java:

// get the same list 
ProductManager.getInstance().getProducts();
// ...

答案 1 :(得分:0)

1)您可以在应用程序级别或基本活动中将数组列表定义为静态。

2)使用serializable或parcelable将数组List传递给其他Activity。

3)您在数组列表中有更多数据,然后您可以使用SharedPreferences。