当前位置: 代码迷 >> Android >> 初学者级有关问题,送分, java.lang.NullPointerException: println needs a message
  详细解决方案

初学者级有关问题,送分, java.lang.NullPointerException: println needs a message

热度:101   发布时间:2016-05-01 13:18:52.0
菜鸟级问题,送分,高手请进 java.lang.NullPointerException: println needs a message
基本思路是这样,我需要做一个软件,同时在电脑和手机实现编辑数据的功能,所以没有加自动增长的主键,约定手机端得主键是奇数,现在我要做的是,在我的手机端先导入手机上的联系人 先说一下处理步骤:
1、读出现有手机上的联系人,如果有数据执行第二步。
2、调用OpDate类的GetNewId方法,查询当前表的主键最大编号
3、而OpDate类是通过调用Contact类的selectTopOne实现的
4、Contact类调用DbHelper的selectTopOne selectTopOne是通过rawQuery来查询数据,DbHelper继承SQLiteOpenHelper

这样做的原因是继承SQLiteOpenHelper的DbHelper的构造函数需要传一个Context,所以我的Contact类直接继承Activity,然后把它自己传进来而OpDate是一个通用操作类,不知道是不是我的思路有什么问题,执行到Contact类的selectTopOne方法时程序就挂了(java.lang.NullPointerException: println needs a message),我完全是自己研究的Android,但是这个东西又急着出效果,所以很多东西可能最基础的就有问题,但是又没那么多时间去补,还希望高手指点,顺便,如果有哪位好心的大哥大姐能给我当师傅,感激不尽,(我愿出学费)

下面贴一下具体的代码
InputData 类,实现导入数据
Java code
package Base;import Human.Relation.R;import DataOperate.Contact;import android.app.Activity;import android.app.ListActivity;import android.content.ContentResolver;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.util.Log;import android.widget.Toast;import Comm.Format;import Comm.OpDate;import DataOperate.DbHelper;public class InputData extends ListActivity {    Contact opDb;    public InputData()    {        opDb=new Contact();    }    // /导入系统联系人    public String inputContact(Context context) {        String trValue = "联系人导入成功!";        Log.v("inputContact", "000000000000000000");        try {            ContentResolver cr = context.getContentResolver();            Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);            if (cursor.getCount() <= 0) {                return trValue = "联系人无资料请添加联系人资料";            }            //获取插入ID值            Log.v("inputContact", "1111111111111");            [color=#FF0000]int PersonID=(new OpDate().GetNewId("T_Person", "PersonID"));[/color]            Log.v("inputContact", Integer.toString(PersonID));            while (cursor.moveToNext()) {                // 取得联系人名字                int nameFieldColumnIndex = cursor                        .getColumnIndex(PhoneLookup.DISPLAY_NAME);                String name = cursor.getString(nameFieldColumnIndex);                //获得联系人ID                String contactId = cursor.getString(cursor                        .getColumnIndex(ContactsContract.Contacts._ID));                Cursor phone = cr.query(                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                        null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID                                + " = " + contactId, null, null);                Log.v("inputContact", "333333333333333333333");                // 取得电话号码(可能存在多个号码)                while (phone.moveToNext()) {                    String strPhoneNumber = phone.getString(phone                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                    Log.v("inputContact", "444444444_"+strPhoneNumber);                    ContentValues cv = new ContentValues();                    Log.v("inputContact", "444_111111111111111111");                    cv.put("PersonID",PersonID);                    PersonID+=2;                    Log.v("inputContact",Integer.toString(OpDate.getAccountID()) );                                          cv.put("AccountID", OpDate.getAccountID());                      Log.v("inputContact", "444_333333333");                       cv.put("CallOrderNo", 0);                       cv.put("SmsOrderNo",0);                       cv.put("PersonName", name);                       cv.put("sex", "");                       cv.put("SimpleSpell", "");                       cv.put("AllSpell", "");                       cv.put("MobilePhone", strPhoneNumber);                       cv.put("MobilePhone2", "");                       cv.put("HomePhone", "");                       cv.put("CompanyPhone", "");                       cv.put("CompanyName", "");                       cv.put("CompanyAdress", "");                       cv.put("Industry", "");                       cv.put("Native", "");                       cv.put("Departments","");                       cv.put("Duties", "");                       cv.put("TermTime", "");                       cv.put("HomeAdress", "");                       cv.put("Hobby", "");                       cv.put("Birthday","" );                       cv.put("IDCard", "");                       cv.put("QQ", "");                       cv.put("MSN", "");                       cv.put("EMAIL", "");                       cv.put("RSNeed", "");                       cv.put("RSNature", "");                       cv.put("TSDistance", "");                       cv.put("RSTendency", "");                       cv.put("RSType", "");                       cv.put("mediaRemark", "");                       cv.put("selfRing",ContactsContract.Contacts.CUSTOM_RINGTONE);//铃声                       cv.put("GroupRing","" );                       cv.put("PictureRemark", ContactsContract.Contacts.PHOTO_ID);//照片                       cv.put("Remark", "");                       cv.put("UpDateTime",new Format().FormatTimeNow());                       cv.put("IsUsed", 1);                       cv.put("SynStatus", 1);                       Log.v("inputContact", "5555555555555");                       try                       {                           Log.v("inputContact", "666666666666666666666666");                           opDb.InsertData("T_Person", cv);                           Log.v("inputContact", "777777777777777777777");                       }                       catch(SQLException ex)                       {                               Log.v("input Contact", "5555555555"+ex.getMessage());                        }                       }                phone.close();            }            cursor.close();        } catch (Exception e) {            Log.v("444444444", e.getMessage());            trValue=e.getMessage();        }        return trValue;    }}
  相关解决方案