- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从 AsyncTask 类获取值以返回到主 UI,即使在 AsyncTask 类完成后也是如此。来自 onPostExectute() 的字符串值将被保存到 json_string 以备后用。然而,当我尝试运行这段代码时,它给了我NullPointerException。
我已经尽力了 3 天了,仍然不知道如何解决这个问题:(有人请帮忙。我真的很感谢你的帮助。
P.S:我遵循了 http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ 中的教程,但是我做了这个简单的版本来测试。
public class ParsingJSONDataSample extends Activity {
// url to make request
private static String url = "http://api.androidhive.info/contacts/";
// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
static TextView textId, textName;
// contacts JSONArray
static JSONArray contacts = null;
static InputStream is = null;
static JSONObject jObj = null;
static String json_string;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.json_listview_sample);
textId = (TextView) findViewById(R.id.textView1);
textName = (TextView) findViewById(R.id.textView2);
new ReadJSONWebServiceFeedFromURL().execute(url);
jObj = new JSONObject(json_string);
// Getting Array of Contacts
contacts = jObj.getJSONArray(TAG_CONTACTS);
JSONObject c = contacts.getJSONObject(0);
textId.setText(c.getString(TAG_ID));
textName.setText(c.getString(TAG_NAME));
}
}
//get the JSON webservice from URL
public String getJSONFromUrl(String url) {
StringBuilder sb = new StringBuilder();
String json;
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
StatusLine statusLine = httpResponse.getStatusLine();
int statuscode = statusLine.getStatusCode();
if (statuscode == 200){
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
}
else{
Log.d("readJSONFeed", "Failed to download file");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// return JSON String
return json;
}
//Asynctask class to read the JSON webservice in background
private class ReadJSONWebServiceFeedFromURL extends AsyncTask<String, Void, String>{
protected String doInBackground(String... urls) {
// TODO Auto-generated method stub
return getJSONFromUrl(urls[0]);
}
protected void onPostExecute(String result){
json_string = result;
}
}
}
最佳答案
字符串json;将其用作全局
干杯,
关于android - 如何在 Asyntask 完成后保留数据值并将数据返回到主 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135464/
我有一个返回字符串的函数,里面有一个 AsynTask。我的问题是我的函数必须在 AsynTask 完成工作后返回值! 这是我的代码: public String getWeather(Context
我正在尝试使用 Sending images using Http Post 将图像发送到 REST 服务.这篇文章不再提供信息,但我在 FileBody bin1 = new FileBody(fi
我有一个 AsynTask,当 doInBackground 方法调用另一个试图显示警报对话框的类时,它会使整个应用程序崩溃。 下面是我的AsynTask, private class Reserve
我是 android 的新手,但对 Java 有一定的了解。我在努力理解 AsyncTask<> 我注意到传递了不同的参数,例如 AsyncTask AsyncTask 放入尖括号中。请问这些参数应该
问题:使用 AsynTask 加载图像时,ListView 无法滚动到底部。 详细信息:我想在用户打开 listView 时将 listView 滚动到底部。 ListView 包含图像和文本。为了更
新版本1.1 大家好。我尝试遵循您的建议,现在我正在尝试重做代码。我添加了这部分代码以在主线程上使用 GoogleMaps 标记。 问题是,当我调用 Ubic() 函数时,出现此错误: http://
我正在尝试从 AsyncTask 类获取值以返回到主 UI,即使在 AsyncTask 类完成后也是如此。来自 onPostExectute() 的字符串值将被保存到 json_string 以备后用
我正在使用 AsyncTask 进行网络操作并将 minSDKVersion 设置为 8。我正在尝试执行 AsyncTask,就像这样,它给出红线错误然后我需要每次清理项目然后它才能工作。 downl
我是一名优秀的程序员,十分优秀!