Android ArrayList不断填充相同的数据
我有一个非常棘手的问题。我有一些在对话框中显示的数据。如果我关闭应用程序并重新打开它,我的ArrayList总是再次添加原始数据(前5个条目->关闭并重新打开->10个条目->关闭并重新打开->15个条目等) 这就是我将数据解析到ArrayList中的方式(在我的TabHost中只发生一次):Android ArrayList不断填充相同的数据,android,json,arraylist,android-alertdialog,Android,Json,Arraylist,Android Alertdialog,我有一个非常棘手的问题。我有一些在对话框中显示的数据。如果我关闭应用程序并重新打开它,我的ArrayList总是再次添加原始数据(前5个条目->关闭并重新打开->10个条目->关闭并重新打开->15个条目等) 这就是我将数据解析到ArrayList中的方式(在我的TabHost中只发生一次): 非常感谢您的帮助 我猜在方法TabHost.pdfListTitle.toArray(…)中,您应该重置每次用数据填充的列表。我猜在方法TabHost.pdfListTitle.toArray(…)中,您
非常感谢您的帮助 我猜在方法
TabHost.pdfListTitle.toArray(…)
中,您应该重置每次用数据填充的列表。我猜在方法TabHost.pdfListTitle.toArray(…)
中,您应该重置每次用数据填充的列表。简单而简单的解决方法是添加
pdfListTitle.clear()
在用数据填充列表之前
但这并不能解决每次显示对话框时都会调用该方法的问题,除非您需要它。简单而简单的解决方法是添加
pdfListTitle.clear()
在用数据填充列表之前
但这并不能解决每次显示对话框时都会调用该方法的问题,除非您需要它。我认为您在选项卡主机中将pdfListTitle作为静态,这可能是个问题 pdfListTitle应在每次活动调用时初始化 例如,您可以像这样在
onCreate()
方法中编写此代码
ArrayList<T> pdfListTitle;
protected void onCreate(Bundle savedInstanceState) {
pdfListTitle = new ArrayList<T>; <----
}
arraylistpdflisttitle;
创建时受保护的void(Bundle savedInstanceState){
pdfListTitle=new ArrayList;我认为您在TabHost中将pdfListTitle视为静态的,这可能是个问题
pdfListTitle应在每次活动调用时初始化
例如,您可以像这样在onCreate()
方法中编写此代码
ArrayList<T> pdfListTitle;
protected void onCreate(Bundle savedInstanceState) {
pdfListTitle = new ArrayList<T>; <----
}
arraylistpdflisttitle;
创建时受保护的void(Bundle savedInstanceState){
pdfListTitle=new ArrayList;正如以前的用户所说,您应该手动清理列表(pdfListTitle.clear()
),但深入了解问题是很有用的
如我所见,您将pdfListTitle
存储为类TabHost中的静态字段(顺便说一句,使用像TabHost这样的名称不是很好,因为android API中有TabHost().Static字段在加载类时首先初始化。并且没有任何担保这些类何时会被Android系统卸载,因为Android中没有“关闭”应用程序。阅读Java中的类加载器对您很有用(您可以非常简单地用谷歌搜索).正如前面的用户所说,您应该手动清理列表(pdfListTitle.clear()
),但深入了解问题是很有用的
如我所见,您将pdfListTitle
存储为类TabHost中的静态字段(顺便说一句,使用像TabHost这样的名称不是很好,因为android API中有TabHost().Static字段在加载类时首先初始化。并且没有任何担保这些类何时会被Android系统卸载,因为Android中没有“关闭”应用程序。阅读Java中的类加载器对您很有用(您可以非常简单地用谷歌搜索).在向列表中填充数据之前,每次都要清除列表。在向列表中填充数据之前,每次都要清除列表。看起来就是这样!但是我如何更改它?因为现在它说:无法对非静态字段TabHost.pdflisttitle进行静态引用?所以我必须在我的选项卡中执行此操作?或者在我的TabHost中执行此操作?因为现在我实例化并填充了我的ArrayList在TabHost中,并在Tab本身中获取条目…我能够用此解决方案修复它!非常感谢。看起来就是这样!但我如何更改它?因为现在它说:无法对非静态字段TabHost.pdfListTitleSo进行静态引用我必须在我的Tab中进行此操作?或者在我的TabHost中进行此操作?因为现在我实例化了然后在TabHost中填充我的ArrayList,并在选项卡本身中获取条目……我能够用这个解决方案修复它!非常感谢。
ArrayList<T> pdfListTitle;
protected void onCreate(Bundle savedInstanceState) {
pdfListTitle = new ArrayList<T>; <----
}