2016-08-20 165 views
-1

我的代碼拋出NullPointerException。Android:java.lang.NullPointerException:嘗試在空對象上調用虛擬方法'int java.lang.String.length()'參考

這是我的Java代碼:

public class DbselectActivity extends Activity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.button1); 
     button.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) 
      { 
       String result = null; 
       InputStream is = null; 

       try{ 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost httppost = new HttpPost("http://192.168.1.0:81/selectall.php"); 

        HttpResponse response = httpclient.execute(httppost); 

        HttpEntity entity = response.getEntity(); 
        is = entity.getContent(); 

        Log.e("log_tag", "connection success "); 
        // Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show(); 
       } 
       catch(Exception e) 
       { 
        Log.e("log_tag", "Error in http connection "+e.toString()); 
        Toast.makeText(getApplicationContext(), "Connection fail", Toast.LENGTH_SHORT).show(); 
       } 
       //convert response to string 
       try 
       { 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
        StringBuilder sb = new StringBuilder(); 
        String line = null; 
        while ((line = reader.readLine()) != null) 
        { 
         sb.append(line + "\n"); 
         // Toast.makeText(getApplicationContext(), "Input Reading pass", Toast.LENGTH_SHORT).show(); 
        } 
        is.close(); 
        result=sb.toString(); 
       } 
       catch(Exception e) 
       { 
        Log.e("log_tag", "Error converting result "+e.toString()); 
        Toast.makeText(getApplicationContext(), " Input reading fail", Toast.LENGTH_SHORT).show(); 
       } 
       //parse json data 
       try 
       { 
        JSONArray jArray = new JSONArray(result); 
        String re=jArray.getString(jArray.length()-1); 
        TableLayout tv=(TableLayout) findViewById(R.id.table); 
        tv.removeAllViewsInLayout(); 

        int flag=1; 

        for(int i=-1;i<jArray.length()-1;i++) 
        { 
         TableRow tr=new TableRow(DbselectActivity.this); 

         tr.setLayoutParams(new LayoutParams(
           LayoutParams.FILL_PARENT, 
           LayoutParams.WRAP_CONTENT)); 

         if(flag==1) 
         { 
          TextView b6=new TextView(DbselectActivity.this); 
          b6.setText("ID"); 
          b6.setTextColor(Color.BLUE); 
          b6.setTextSize(15); 
          tr.addView(b6); 

          TextView b19=new TextView(DbselectActivity.this); 
          b19.setPadding(10, 0, 0, 0); 
          b19.setTextSize(15); 
          b19.setText("Name"); 
          b19.setTextColor(Color.BLUE); 
          tr.addView(b19); 

          TextView b29=new TextView(DbselectActivity.this); 
          b29.setPadding(10, 0, 0, 0); 
          b29.setText("no"); 
          b29.setTextColor(Color.BLUE); 
          b29.setTextSize(15); 
          tr.addView(b29); 

          tv.addView(tr); 

          final View vline = new View(DbselectActivity.this); 
          vline.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 2)); 
          vline.setBackgroundColor(Color.BLUE); 

          tv.addView(vline); 
          flag=0; 

         } 
         else 
         { 

          JSONObject json_data = jArray.getJSONObject(i); 

          Log.i("log_tag","id: "+json_data.getInt("f1")+ 
            ", Username: "+json_data.getString("f2")+ 
            ", No: "+json_data.getInt("f3")); 

          TextView b=new TextView(DbselectActivity.this); 
          String stime=String.valueOf(json_data.getInt("f1")); 
          b.setText(stime); 
          b.setTextColor(Color.RED); 
          b.setTextSize(15); 
          tr.addView(b); 

          TextView b1=new TextView(DbselectActivity.this); 
          b1.setPadding(10, 0, 0, 0); 
          b1.setTextSize(15); 
          String stime1=json_data.getString("f2"); 
          b1.setText(stime1); 
          b1.setTextColor(Color.WHITE); 
          tr.addView(b1); 

          TextView b2=new TextView(DbselectActivity.this); 
          b2.setPadding(10, 0, 0, 0); 
          String stime2=String.valueOf(json_data.getInt("f3")); 
          b2.setText(stime2); 
          b2.setTextColor(Color.RED); 
          b2.setTextSize(15); 
          tr.addView(b2); 

          tv.addView(tr); 

          final View vline1 = new View(DbselectActivity.this); 
          vline1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1)); 
          vline1.setBackgroundColor(Color.WHITE); 
          tv.addView(vline1); 
         } 
        } 
       } 
       catch(JSONException e) 
       { 
        Log.e("log_tag", "Error parsing data "+e.toString()); 
        Toast.makeText(getApplicationContext(), "JsonArray fail", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
} 

我的PHP代碼:

<?php 

     $con = mysql_connect("localhost","root",""); 
     if (!$con) 
      { 
      die('Could not connect: ' . mysql_error()); 
      } 

      mysql_select_db("ex1", $con); 

      $i=mysql_query("select * from t1",$con); 

      $num_rows = mysql_num_rows($i); 

      $check=''; 
      while($row = mysql_fetch_array($i)) 
      { 
        $r[]=$row; 
        $check=$row['f1']; 

      } 

     if($check==NULL) 
      {    
         $r[$num_rows]="Record is not available"; 
         print(json_encode($r)); 
      } 
      else 
      { 
       $r[$num_rows]="success"; 
       print(json_encode($r)); 
       } 
mysql_close($con);    
    ?> 

logcat的是:

致命異常:主要 過程:com.example.dell。 dbselect,PID:16779 java.lang.NullPointerException:嘗試調用ke虛方法'int null對象引用 java.lang.String.length()at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) at org.json.JSONTokener.nextValue(JSONTokener.java :94) 在org.json.JSONArray(JSONArray.java:92) 在org.json.JSONArray(JSONArray.java:108) 在 com.example.dell.dbselect.DbselectActivity $ 1.onClick(DbselectActivity。 .java:81) at android.view.View.performClick(View.java:5198) at android.view.View $ PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler的.java:73 9) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) 在java.lang.reflect.Method.invoke(本機方法) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit。主(ZygoteInit.java:616)08

我已經嘗試了很多,但同樣的錯誤發生。引導我。

+0

能否請您發佈logcat的? –

+1

可能重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) – user392117

+0

i hav posted logcat ... –

回答

0

評論這條線,然後嘗試

String re=jArray.getString(jArray.length()-1); 
+0

我試過了......但是同樣的輸出發生了 –

+0

檢查日誌是否一樣? –

+0

是的......它是一樣的 –

相關問題