通过findViewById()方法从layout中获取view并进行相应的转换时提示:"Cannot cast from View to AutoCompleteTextView"的解决办法!(转+自己错误)
转:http://blog.csdn.net/zyz511919766/article/details/7453864
代码:
1 package zyz.example.autocompletetextview; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.widget.ArrayAdapter; 6 7 public class AutoCompleteTextView extends Activity { 8 /** Called when the activity is first created. */ 9 @Override 10 public void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.main); 13 14 AutoCompleteTextView textView = (AutoCompleteTextView)findViewById(R.id.autocomplete_country); 15 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES); 16 auttextView.setAdapter(adapter); 17 } 18
第14行提示错误:“Cannot cast from View to AutoCompleteTextView”,从而也导致第16行发生错误。
细查原因,未发现有拼写错误。
上网搜索,有说可能是未导入相应的包,可明明已经按过组合键“ctrl+shift+O”导入了可能的包了。
也有说根本不能这么转换,扯,搞android开发的都是在用这个方法啊!
再细看,恍然,原来定义的类名跟调用的函数名一模一样,冲突了,怪不得呢!!!
经修搞改类名后,错误排除!!!!!
ok!!!!!!
需要注意的是
(1)改完类名后可能需要相应的改动“.java”文件的名称
(2)改动完成后,再按一次组合键“ctrl+shift+O”,确保导入了所需的包。因为之前的名称冲突可能导致你并未导入正确的包。
(3)记得保存一下修改结果!
谨记!
2014年10月14日11:34:09
刚刚遇到了个类作者类似的问题,可能昨晚没睡好的缘故,今天新建一个类,在绑定控件的时候:
ListView lv = (ListView)findViewById(R.id.a);
报错:Cannot cast from View to ListView
各种不理解,还以为我代码写错了,各种找原因,差点以为人生观都不一样了!! 后才看了作者文章才发现:
public class ListView extends Activity { //类名是什么??????????????????? @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listvview); ListView lv = (ListView)findViewById(R.id.a); //控件名又是什么???????????????????? ArrayList<String> listdata = new ArrayList<String>(); for (int i = 0; i < 400; i++) { listdata.add("Item" + i); }
所以以后写程序真的不能犯迷糊,要不就会让你各种抓狂。 好了,不说了,泪奔去了~~o(>_<)o ~~
我是刚刚进入公司的Android实习生,菜鸟一枚,博客记录我犯过的错,收获的东西,学到的知识和技术,可能里面会有很多错误的地方,幼稚的地方,欢迎大家指出来,帮助我进步,但请别伤害我,我只是菜鸟一枚,我在努力争取进步。