我正在开发一个与服务器通信并接收数据流的应用程序,它就像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。
所以提前谢谢!!!
答案 0 :(得分:3)
如果这一行
int uuId = rpc.lUserIdByServerUserId(userId,newServerName,context);
确实是抛出异常的行,rpc
必须是null
。
使用调试器逐步完成程序,找出原因。