android编程虚方法,尝试在空对象引用 - Android上调用虚方法'int java.lang.String.length()'...

我是Android新手,我一直在尝试使用PHP和MYSQL进行JSON解析,当我运行app时出现此错误 .

Error:

FATAL EXCEPTION:main进程:com.example.admin.androidjsonparsing,PID:13399 java.lang.NullPointerException:尝试在org.json的空对象引用上调用虚方法'int java.lang.String.length()' .JSONTokener.nextCleanInternal(JSONTokener.java:116)位于org.json.JSONArray的org.json.JSONTokener.nextValue(JSONTokener.java:94) . (JSONArray.java:92)org.json.JSONArray . (JSONArray . java:108)com.example.admin上的com.example.admin.androidjsonparsing.MainActivity.loadIntoListView(MainActivity.java:79)com.example.admin的com.example.admin.androidjsonparsing.MainActivity.access $ 000(MainActivity.java:22) . 在android.os.AsyncTask.finish(AsyncTask.java:695)的com.example.admin.androidjsonparsing.MainActivity $ 1GetJSON.onPostExecute(MainActivity.java:38)上的androidjsonparsing.MainActivity $ 1GetJSON.onPostExecute(MainActivity.java:51)在Android.os.Handler.dispatchMessag的android.os.AsyncTask.access $ 600(AsyncTask.java:180)android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:712) e(Handler.java:106)位于android.app.Looper.loop(Looper.java:193)的android.app.ActivityThread.main(ActivityThread.java:6669)at java.lang.reflect.Method.invoke(Native方法)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)的com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)

这里 code:

MainActivity.java

package com.example.admin.androidjsonparsing;

import android.os.AsyncTask;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.Toast;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class MainActivity extends AppCompatActivity {

ListView listView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.listView);

getJSON("http://192.168.1.4/AndroidJSONParsing/getdata.php");

}

private void getJSON(final String urlWebService) {

class GetJSON extends AsyncTask {

@Override

protected void onPreExecute() {

super.onPreExecute();

}

@Override

protected void onPostExecute(String s) {

super.onPostExecute(s);

Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();

try {

loadIntoListView(s);

} catch (JSONException e) {

e.printStackTrace();

}

}

@Override

protected String doInBackground(Void... voids) {

try {

URL url = new URL(urlWebService);

HttpURLConnection con = (HttpURLConnection) url.openConnection();

StringBuilder sb = new StringBuilder();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

String json;

while ((json = bufferedReader.readLine()) != null) {

sb.append(json + "\n");

}

return sb.toString().trim();

} catch (Exception e) {

return null;

}

}

}

GetJSON getJSON = new GetJSON();

getJSON.execute();

}

private void loadIntoListView(String json) throws JSONException {

JSONArray jsonArray = new JSONArray(json);

String[] heroes = new String[jsonArray.length()];

for (int i = 0; i < jsonArray.length(); i++) {

JSONObject obj = jsonArray.getJSONObject(i);

heroes[i] = obj.getString("name");

}

ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, heroes);

listView.setAdapter(arrayAdapter);

}

}

activity_main.xml中

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.admin.androidjsonparsing.MainActivity">

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentTop="true" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值