2011-09-20 172 views
1

我正在處理與服務器通信並接收數據流,這就像60-80k符號的應用程序。所以我拆分'該字符串和計算流劃分成片,當我得到了流的類型我像這樣創建類的實例:安卓空指針 - 例外無法找到解決方案

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); 

And the NullPointer它拋出最後一行的異常,我找不到如何解決它。我使用一個輔助類爲我的數據庫,所以我不認爲問題在那裏,但這裏是一個鏈接到我的DataBaseHelper.class代碼:DatabaseHelper.class

所以在此先感謝!

回答

3

如果該行

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

確實拋出異常的行,rpc必須null

使用調試器來瀏覽程序以找出原因。

+0

其實我做到了,但找不到解決方案..我知道很難幫助我,因爲我無法複製和粘貼所有代碼,但我不想讓別人爲我寫。 ..我只是需要一些建議可能是什麼問題... –