Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead. Please use Android Tools > Fix Project Properties.
这是copy的另外一台电脑上项目之后,编译出现的错误提示,解决方法:右击项目Android Tools > Fix Project Properties。
修改后,Project->Properties->Java Compiler 中JDK compliance被设置为1.5。ps:应该是两环境的编译器所用版本不同所导致的。
2012.10.27
java.lang.RuntimeException: Unable to start activity ComponentInfo{song.com.xxx/song.com.xxxx.xxx}: java.lang.NullPointerException
一般都会在
Activity onCreate()
方法里的
setContentView(
XXX
)
发生此错。
原因一:xxx的错误,若为R.layout.main 那么应该是main.xml文件中的标签 使用错误,最常见的而且编译器不会提示的错误就是 android:name 和 android:id 两者混淆,仔细检查main.xml的标签是否全部正确
原因二:在setContentView(view)方法之后使用了requestWindowFeature()方法,并且在此错误下面会提示requestFeature必须在setContentView之前使用,只需要把requestWindowFeature()方法放在setContentView(view)方法之前就可以解决
原因三:在onCreate()方法之外,并且不属于任何一个方法体内直接给某控件findById(R.id.xx)所导致,需要在某方法内并且在setContentView(view)方法之前进行findById(R.id.xx)即可解决
原因四:在setContentView(view)之前没有对view进行实例化,只进行了声明而直接 setContentView(view) 所导致,仔细检查view是否setContentView(view)调用之前并在方法内进行实例化即可解决
转至cnblogs
2012.11.22
最近在看数据库方面的视频,然后自己试着改写了一段简单代码用于显示新建的db数据库中的表内容出现如下错误:
java.lang.IllegalArgumentException: column '_id' does not exist
原因:使用Cursor相关的Adapter时需要一个自增的列,且名字必需为 _id,并且查询时必须要用的_id查这个列,不然依旧会出现上述问题。个人觉得比较蛋疼,这么死的规定。
public class DBTest extends Activity
{
SQLiteDatabase db;
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//创建或打开数据库(此处需要使用绝对路径)
db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir()
.toString() + "/song.db" , null);
listView = (ListView)findViewById(R.id.show);
Cursor cursor = db.rawQuery("select _id,name,phone,address from hotel", null);
inflateList(cursor);
}
private void inflateList(Cursor cursor)
{
//填充SimpleCursorAdapter
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
DBTest.this , R.layout.line, cursor
, new String[]{"name" , "phone","address"}
, new int[]{R.id.name , R.id.phone,R.id.address});
//显示数据
listView.setAdapter(adapter);
}
}