【问题标题】:NullPointer Exception AndroidNullPointer 异常 Android
【发布时间】:2014-04-09 10:37:31
【问题描述】:

在光标移动到下一个值时,它会抛出 NullPointerException(在第一个值上它运行完全正确)。

try {
           myDB = this.cordova.getActivity().openOrCreateDatabase(Path, 0 , null);
           /*retrieve data from database */

           //sQLITE qUERY AND RESULTS STORED IIN CURSOR

           Cursor c = myDB.rawQuery("SELECT * FROM " + TableName + " WHERE SyncStatus='no'", null);
           //int Column1 = c.getColumnIndex("OrderID");
           while (c.moveToNext()) {
           // Initialize soap request + add parameters
           url="http://10.1.1.239/RMS/Service.asmx/InsertORDR?jsoncallback=json&ParentID="+c.getString(2).trim()+"&CustomerID=4000010000100001&RouteID="+c.getString(4).trim()+"&RouteDay="+c.getString(5).trim()+"&WhsID="+c.getString(6).trim()+"&VehicleID=1&PrefDriverID=1&PrefSalesPersonID="+c.getString(9).trim()+"&DocType="+c.getString(10).trim()+"&OrderDate="+c.getString(11).trim()+"&OrderTime="+c.getString(12).trim()+"&ScheduleType="+c.getString(16).trim()+"&OrderType="+c.getString(17).trim()+"&ItemCost="+c.getString(18).trim()+"&SubTotal="+c.getString(25).trim()+"&PaymtMode="+c.getString(26).trim()+"&Currency="+c.getString(31).trim()+"&Notes="+c.getString(32).trim()+"&CreatedDate="+c.getString(34).trim()+"&CreatedBy="+c.getString(35).trim()+"&UpdatedDate="+c.getString(36).trim()+"&UpdatedBy="+c.getString(37).trim()+"&Status="+c.getString(38).trim()+"&Order_Status_Note="+c.getString(41).trim()+"";
           // Making a request to url and getting response
           String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
           if(jsonStr != null){
              Cursor cRDR1 = myDB.rawQuery("SELECT * FROM RDR1 WHERE SyncStatus='no' AND OrderID='"+c.getString(1)+"'", null);
              while (cRDR1.moveToNext()) {
                  url1="http://10.1.1.239/RMS/Service.asmx/InsertRDR1?jsoncallback=json&ParentID="+cRDR1.getString(2).trim()+"&ItemID="+cRDR1.getString(4).trim()+"&Box="+cRDR1.getString(6).trim()+"&Patti="+cRDR1.getString(8).trim()+"&Packet="+cRDR1.getString(9).trim()+"&UnitPrice="+cRDR1.getString(10).trim()+"&TotalPacket="+cRDR1.getString(11).trim()+"&TotalCost="+cRDR1.getString(12).trim()+"&AvlQty="+cRDR1.getString(13).trim()+"&Notes="+cRDR1.getString(16).trim()+"";
                  String jsonStrRDR1 = sh.makeServiceCall(url1, ServiceHandler.GET);
                  Log.e("Success", jsonStrRDR1);
              }
           }
           }
        }
      catch(Exception e) {
       Log.e("Error", "Error", e);
      } finally {
           if (myDB != null)
            myDB.close();
      }

LogCat

04-09 10:05:21.576: E/Success(7033): json({'Result': '1'})
04-09 10:05:26.626:E/Success(7033): json({'Result': '1'}) 
04-09 10:05:36.778: E/Success(7033): json({'Result': '1'}) 
04-09 10:05:51.556: E/Success(7033): json({'Result': '1'}) 
04-09 10:07:18.966: E/Error(7033): Error 
04-09 10:07:18.966: E/Error(7033): java.lang.NullPointerException 
04-09 10:07:18.966: E/Error(7033): at com.rms.vc.DataSync.execute(DataSync.java:66)
04-09 10:07:18.966: E/Error(7033): at org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:66)

【问题讨论】:

  • 你可以在这里发布你的 LogCat 吗?
  • while循环开始之前,写这个cursor.moveToFirst();
  • 04-09 10:05:21.576: E/Success(7033): json({'Result': '1'}) 04-09 10:05:26.626: E/Success(7033 ): json({'Result': '1'}) 04-09 10:05:36.778: E/Success(7033): json({'Result': '1'}) 04-09 10:05:51.556 :E /成功(7033):json({'Result':'1'})04-09 10:07:18.966:E /错误(7033):错误04-09 10:07:18.966:E /错误( 7033): java.lang.NullPointerException 04-09 10:07:18.966: E/Error(7033): at com.rms.vc.DataSync.execute(DataSync.java:66) 04-09 10:07:18.966: E/错误(7033):在 org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:66)
  • @Kedarnath:它无法正常工作,抛出 Uri 解析异常
  • 这意味着它正在工作,现在你的 Uri 有问题。可能你的 Uri 中有一个空格,所以我建议你对你的 Uri 进行编码。

标签: java android core


【解决方案1】:

首先你在 while 循环之前跳过 cursor.moveToFirst() 行。 它必须类似于下面的代码。

Cursor cRDR1 = myDB.rawQuery("SELECT * FROM RDR1 WHERE SyncStatus='no' AND OrderID='"+c.getString(1)+"'", null);
                       if( cursor.moveToFirst()){ // return true if the first elements is exist
                        while (cRDR1.moveToNext()) {
                            url1="http://10.1.1.239/RMS/Service.asmx/InsertRDR1?jsoncallback=json&ParentID="+cRDR1.getString(2).trim()+"&ItemID="+cRDR1.getString(4).trim()+"&Box="+cRDR1.getString(6).trim()+"&Patti="+cRDR1.getString(8).trim()+"&Packet="+cRDR1.getString(9).trim()+"&UnitPrice="+cRDR1.getString(10).trim()+"&TotalPacket="+cRDR1.getString(11).trim()+"&TotalCost="+cRDR1.getString(12).trim()+"&AvlQty="+cRDR1.getString(13).trim()+"&Notes="+cRDR1.getString(16).trim()+"";
                            String jsonStrRDR1 = sh.makeServiceCall(url1, ServiceHandler.GET);
                            Log.e("Success", jsonStrRDR1);
                          }
                        }

【讨论】:

  • 在这种情况下你得到了什么摘录?
  • java.lang.NullPointerException 它在“url”上抛出异常
  • 我不明白,你能详细说明一下吗?谢谢
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
相关资源
最近更新 更多