Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ArrayList不断填充相同的数据_Android_Json_Arraylist_Android Alertdialog - Fatal编程技术网

Android ArrayList不断填充相同的数据

Android ArrayList不断填充相同的数据,android,json,arraylist,android-alertdialog,Android,Json,Arraylist,Android Alertdialog,我有一个非常棘手的问题。我有一些在对话框中显示的数据。如果我关闭应用程序并重新打开它,我的ArrayList总是再次添加原始数据(前5个条目->关闭并重新打开->10个条目->关闭并重新打开->15个条目等) 这就是我将数据解析到ArrayList中的方式(在我的TabHost中只发生一次): 非常感谢您的帮助 我猜在方法TabHost.pdfListTitle.toArray(…)中,您应该重置每次用数据填充的列表。我猜在方法TabHost.pdfListTitle.toArray(…)中,您

我有一个非常棘手的问题。我有一些在对话框中显示的数据。如果我关闭应用程序并重新打开它,我的ArrayList总是再次添加原始数据(前5个条目->关闭并重新打开->10个条目->关闭并重新打开->15个条目等)

这就是我将数据解析到ArrayList中的方式(在我的TabHost中只发生一次):


非常感谢您的帮助

我猜在方法
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>; <----

}