【Android 排错第一例】NullPointException

来源:互联网 发布:sql update 多个值 编辑:程序博客网 时间:2024/04/30 03:26

排错经验:不要因为某个变量简单熟悉就忽略对该值的检查,由此体现代码的健壮的重要性。
报错:NullPointException,错误处:lv.setAdapter(adapter);
也就是说,lv或adapter传值为空。
前期把精力全部投入到SimpleCursorAdapter,包括“_id”和API 11新出现的SimpleCursorAdapter的构造方法中出现的新的变量flags。(flags即标志,FLAG_REGISTER_CONTENT_OBSERVER的标志,即说明这个适配器是否注册到CONTENT_OBSERVER)
…..
最后通过:

        if(lv != null){             if(adapter != null){                 lv.setAdapter(adapter);              }else{                 Log.v("空值", "adapter为空");             }         }else{             Log.v("空值", "lv为空");         }

發現是lv的值為空。

package com.study.test02;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.widget.CursorAdapter;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import com.study.port.SQLiteHelper;/** * 数据库SQLite访问 *  * @author lenov * */public class Activity_01 extends Activity {    ListView lv;    SQLiteHelper helper;    SQLiteDatabase db;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.layout_activity01);        lv = (ListView)findViewById(R.id.lv_activity01);        helper = new SQLiteHelper(this, 1);        db = helper.getWritableDatabase();        /**         * 两种查询方式,query()和rawQuery()         */        Cursor cursor = db.query("contacts", new String[] { "_id", "name",                "telphone" }, null, null, null, null, null);        // Cursor cursor = db.rawQuery(        // "select name,telphone from contacts where _id > ?",        // new String[] { "1" });//       CursorAdapter         CursorAdapter adapter = new SimpleCursorAdapter(this,         R.layout.layout_cursor, cursor,         new String[] { "name", "telphone" }, new int[] {         R.id.name_layout_cursor, R.id.phone_layout_cursor },0);         if(lv != null){             if(adapter != null){                 lv.setAdapter(adapter);              }else{                 Log.v("空值", "adapter为空");             }         }else{             Log.v("空值", "lv为空");         }        /*         * 结果集Cursor的访问         *///      if (cursor.getCount() > 0) {//          cursor.moveToFirst();//          do {//              String name = cursor.getString(1);//              String telphone = cursor.getString(2);//              Log.i("提示", name+telphone);//          } while (cursor.moveToNext());//      }    }}
0 0
原创粉丝点击