我的Android应用程序因为此异常而崩溃,我无法理解为什么会发生此异常:
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
以下是我的代码。
private void setAllData(View v)
{
ArrayList<String> idList = new ArrayList<String>();
boolean added=false;
for(String chid:checkedList)
{
SortedSet<String> ts = new TreeSet<String>();
int id=txt2Id.get(chid);
View v1=v.findViewById(id);
if(v1!=null)
{
Log.e("---- Value of v1 ----", v1.getTag().toString());
// I am getting ClassCast exception on the below line
ArrayList<String>vidList=(ArrayList<String>) v1.getTag(id);
if(vidList==null||vidList.size()==0)
{
((CustomFragment) getActivity()).updateTab4List(new ArrayList<String>());
return;
}
else
{
if(!added)
{
idList=vidList;
added=true;
}
else if(idList.size()==0)
{
((CustomFragment) getActivity()).updateTab4List(idList);
return;
}
else
{
ArrayList<String> temp = new ArrayList<String>();
int i=0;
for(String str:idList)
{
if(vidList.contains(str))
temp.add(str);
}
idList=temp;
}
}
}
}
if(checkedList.size()==0)
idList=null;
((CustomFragment) getActivity()).updateTab4List(idList);
}
答案 0 :(得分:4)
getTag()
类的方法View
返回一个Object。见http://developer.android.com/reference/android/view/View.html#getTag()
您无法将其强制转换为ArrayList。表达是非法的
ArrayList<String>vidList=(ArrayList<String>) v1.getTag(id);
也许你想要
ArrayList<String> vidList = new ArrayList<String>();
vidList.add((String) v1.getTag(id));