【发布时间】:2015-03-11 19:42:30
【问题描述】:
我尝试通过收集 JSON 格式的信息来连接到 MySQL 数据库。我的代码接收这些信息。我创建了一个扩展AsyncTask 的类,在我的onPostExecute 类中,我想将完整的JSONArray 保存到JSONArray 之外的另一个JSONArray 中。这样做我不会收到错误消息,但是一旦我想使用这个对象,我的代码就会崩溃,我得到一个 java.lang.NullPointerException 并且我的新 JSON 数组为空。
有人可以帮帮我吗?
class task extends AsyncTask<String, String, Void>
{
InputStream is = null ;
protected Void doInBackground(String... params) {
String url_select = "http://pois.lima-city.de/test1.php";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
try {
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
//read content
is = httpEntity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection "+e.toString());
//Toast.makeText(MainActivity.this, "Please Try Again", Toast.LENGTH_LONG).show();
}
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = "";
while((line=br.readLine())!=null)
{
sb.append(line+"\n");
}
is.close();
result=sb.toString();
} catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error converting result "+e.toString());
}
return null;
}
protected void onPostExecute(Void v) {
try {
LatLng coordinates;
String between = "";
JSONArray JarrayP = new JSONArray(result);
myJSONArray = JarrayP;
} catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error parsing data "+e.toString());
}
}
PS:它在另一个类中。
【问题讨论】:
-
你确定你在使用 myJSONArray after 它在 onPostExecute 中被初始化了吗?请记住,您正在执行 AsyncTask,这意味着您的 myJSONArray 不会立即准备好。对于适当的上下文,请包含更多相关代码。
标签: java android mysql json android-asynctask