好吧看起来很傻......但现在这让我疯了。我有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文件夹,多次清理项目,问题仍然存在......我只问:到底发生了什么事?
已解决建议:请勿在晚上编码
答案 0 :(得分:1)
布局文件中窗口小部件的更改应反映在驻留在其他res/layout-*
文件夹中的相应文件中。或者,应该在代码中适当地处理这些更改。