Android Null-Pointer-Exception无法找到解决方案

时间:2011-09-20 09:54:26

标签: android nullpointerexception

我正在开发一个与服务器通信并接收数据流的应用程序,它就像60-80k符号。所以我拆分了那个字符串并将流计算成一个片段,当我得到它的类型时stream我创建了一个类的实例:

BasePacket packet=null; // this is the base packet
if(packetType=1)
    startPacket packet = new startPacket(params) // startPacket class extends BasePacket

if(packetType=2)
    endPacket packet = new endPacket(params) // endPacket class extends BasePacket
......

startPacket中,我创建了userPacket的实例,该实例也扩展了BasePacket

userPacket user; // in startPacket

我有另一个类RPCCommunicator,其中包含了与服务器通信所需的所有方法。

RPCCommnicator我有:

userPacket user;
startPacket startP;
.......

这是我的问题...... 在RPCCOmmunicator我有这样的方法:

    private static Integer localUserIdByServerUserId(int serverUserId, String serverName,Context context){

    try {
        dbHelper = new DataBaseHelper(context, "opa_sys_tpl.sqlite", null, 1);
        dbHelper.checkDatabase("opa_sys_tpl.sqlite");
        dbHelper.copyDataBase("opa_sys_tpl.sqlite");
    } catch (IOException e) {
        e.printStackTrace();
    }
    dbHelper.getDatabase();

    String query = "SELECT id FROM users WHERE objectId = "+serverUserId+" AND serverName = '"+serverName+"' LIMIT 1";
    ArrayList<String> result = new ArrayList<String>();
    cursor = dbHelper.executeSQLQuery(query);
    cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        result.add(cursor.getString(cursor.getColumnIndex("id")));
         cursor.moveToNext();
    }

    Log.i("result ","Result : "+result.toString());
    Log.i("CURSOR ","Cursor Position : "+cursor.getPosition());
    Integer uuid = Integer.parseInt(result.get(cursor.getColumnIndex("id")));
    Log.w("localUSerByIdServerUserId","LocalUserByIdServerUserId result : "+uuid);
    cursor.close();
    return uuid;
}

我正在startPacket中调用它:

int uuId = rpc.lUserIdByServerUserId(userId,newServerName,context);

它抛出最后一行的NullPointerException,我找不到如何解决它。我正在为我的数据库使用一个帮助类,所以我不认为问题存在,但这里有一个链接到我的DataBaseHelper.class代码:DatabaseHelper.class

所以提前谢谢!!!

1 个答案:

答案 0 :(得分:3)

如果这一行

int uuId = rpc.lUserIdByServerUserId(userId,newServerName,context);

确实是抛出异常的行,rpc必须是null

使用调试器逐步完成程序,找出原因。