我在ArrayList
中有一个Activity A
来调用它列表。现在Activity A
拨打Activity B
和Activity B
来电话Activity C
。在Activity C
中,我想在列表中插入一些元素,并在我回到Activity A
时反映这些更改。
我采取的方法
1)将List
声明为公共静态,以便我可以在任何活动中访问它,但问题是当Activity A
Activity C
时,列表会重新初始化
提前致谢。
答案 0 :(得分:1)
您可以创建一个新类并将ArrayList放在其中而不是Activity A.因此,当创建活动A时,不会重新初始化ArrayList。
答案 1 :(得分:1)
这似乎不是一个好习惯。
您可以尝试这样做:
ListContainer
创建另一个类mList
。ListContainer.getList()
return mList==null ? new ArrayList() : mList
我认为这是对你的清单做任何你想做的事情的好方法:D
答案 2 :(得分:0)
看看Observer模式,它可能对你有所帮助。 如果您订阅,您可以订阅活动A中的更改并从应用的任何部分推送它们。 这里还有一些有用的库:EventBus,Otto。
答案 3 :(得分:0)
如果您的流量来自A - > B - > C和从C-> B-> A进行更改然后startActivityForResult并在其中设置并传递它将是最好的使用方法..
仍然如果你想使用静态方法,那么它应该只在Activity A中初始化..并且静态arraylist没有办法初始化多一次..它总是需要单个内存分配并初始化只有一次..
答案 4 :(得分:0)
当您需要一些可访问不同活动的变量时,您可以在Application类中声明,定义和修改这些变量。你应该将这些变量声明为静态并添加getter&这些的设定者。请参阅此文章以创建应用程序类:
https://guides.codepath.com/android/Understanding-the-Android-Application-Class
我相信这会对你有所帮助,因为我们已经通过这种方式解决了这个问题。
答案 5 :(得分:0)
使用单例模型类make数组列表在任何地方使用此数组列表并从任何类更改。只需调用classname .arraylist;
otto是你可以使用的另一个liabrary你会得到但我重新建立单身模型类
答案 6 :(得分:0)
您可以定义列表static
。由于某些问题,static
变量并不经常使用,但是您可以将其用于少数(一个或两个)变量,但要谨慎使用。 static
变量可以与类名一起使用,例如ShoppingActivity.product_purchases
。