ClassCastException - 一个ADT错误?

时间:2013-08-23 02:46:57

标签: android eclipse adt

好吧看起来很傻......但现在这让我疯了。我有AutoCompleteTextView看起来像:

     <AutoCompleteTextView
    android:id="@+id/etActionSearch"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="5dp"
    android:layout_toLeftOf="@+id/LinearLayout2"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:drawablePadding="7dp"
    android:ems="10"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:hint="start typing a name"
    android:inputType="textFilter"
    android:visibility="gone" />

前一段时间它被用作EditText,但之后我只是更改了每手的XML(成为AutoCompleteTextView)而没有删除View并再次创建它。我在代码中引用它:

  private AutoCompleteTextView etActionSearch; //class field
  etActionSearch = (AutoCompleteTextView) actionBar.getCustomView()
            .findViewById(R.id.etActionSearch);
    etActionSearch.setThreshold(1);

现在问题是:在我用来测试应用程序的设备上,因为它创建了一切正常。现在我将项目发送给我的伙伴,他在运行相同Android版本的设备上运行它:

    java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.AutoCompleteTextView

我发给他一个导出的.apk,同样的问题,崩溃。我在设备上安装了 SAME .apk,一切正常。我在模拟器上运行此代码(第一次在模拟器上运行) - 同样Exception,崩溃。我删除了R.java,gen文件夹,多次清理项目,问题仍然存在......我只问:到底发生了什么事?

已解决建议:请勿在晚上编码

1 个答案:

答案 0 :(得分:1)

布局文件中窗口小部件的更改应反映在驻留在其他res/layout-*文件夹中的相应文件中。或者,应该在代码中适当地处理这些更改。