0

この例外が原因で 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);
}
4

1 に答える 1

4

クラスのメソッドgetTag()Viewオブジェクトを返します。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));
于 2013-02-12T05:04:51.597 に答える