【发布时间】:2013-11-29 09:51:22
【问题描述】:
在 Android 应用中解析此问题的最佳方法是什么?我在运行应用程序时收到 java.lang.NullPointerException。请查看我的代码,如果您有任何建议,请告诉我。
{"begin":[{"id":1,"name":"Bob","size":2}],"open":[{"id":1,"name":"Mike","size":2}]}
这是我的代码。
public class MainFragment extends Fragment {
public MainFragment() {}
//URL to get JSON Array
private String url = "URL...";
//JSON Node Names
private static final String TAG_BEGIN = "begin";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_SIZE = "size";
JSONArray begin = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
new JSONParse().execute();
return rootView;
}
private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(HomeActivity.this);
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
// Getting JSON Array
begin = json.getJSONArray(TAG_BEGIN);
JSONObject c = begin.getJSONObject(0);
// Storing JSON item in a Variable
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String size = c.getString(TAG_SIZE);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
当我运行活动时,我收到此错误:
FATAL EXCEPTION: main
java.lang.NullPointerException
at
...$MainFragment$JSONParse.onPostExecute(MainActivity.java:399)
at
...$MainFragment$JSONParse.onPostExecute(MainActivity.java:373)
这是……
begin = json.getJSONArray(TAG_BEGIN);
还有……
private class JSONParse extends AsyncTask<String, String, JSONObject> {
【问题讨论】:
-
什么是
TAG_CURRENT? -
我看不到“current = json.getJSONArray(TAG_BEGIN);”在 onPostExecute 方法中。我看到“开始 = json.getJSONArray(TAG_CURRENT);”
-
请从 logcat 发布堆栈跟踪。
-
哎呀@ShobhitPuri。 TAG_CURRENT 应该已更改为 TAG_BEGIN。我只是忘记重命名了。
-
@WilliamRiley 我重命名了我的一些代码。请以当前为开始。我只是忘了改变那部分。
标签: java android json android-asynctask nullpointerexception