我正在使用xml解析json in text to textview但是不知道如何。
这是json
{
"sys":
{
"sunrise":1381107633,
"sunset":1381149604
}
}
我正在调用textview并将其更改为int但仍然无效。
TextView asetBaik = (TextView) findViewById(R.id.asetangka);
这就是我如何调用json
@Override
protected String doInBackground(String... params) {
String link_url = "https://example.com/api/sun";
JSONParser jParser = new JSONParser();
JSONObject json = jParser.AmbilJson(link_url);
try {
JSONObject data = json.getJSONObject("sys");
baik = Integer.parseInt(asetBaik.getText().toString());
baik = data.getInt("sunrise");
asetBaik.setText(baik);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
pDialog.dismiss();
}
}
请帮助我如何获取int值json并将其带入Sting TextView
答案 0 :(得分:1)
我希望这对你有用。
try {
JSONObject jsonObject1= json.getJSONObject("sys");
int sunrise = jsonObject1.getInt("sunrise");
int sunset = jsonObject1.getInt("sunset");
Log.e("sunrise", "" + sunrise);
Log.e("sunset", "" + sunset);
} catch (Exception e) {
}
您正在使用asynctask,您需要使用处理程序来更新主线程上的UI
答案 1 :(得分:1)
您正在更新不同线程(而不是UI线程)中的文本视图。 您可以通过两种方式更新视图:
答案 2 :(得分:1)
只有一个Thread运行,它是UI主线程,并且它不允许从线程进程更新UI。
因此,如果您想在TextView
方法中设置doInBackground()
,请在runOnUiThread
方法中执行UI更新操作。
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
JSONObject data = json.getJSONObject("sys");
baik = Integer.parseInt(asetBaik.getText().toString());
baik = data.getInt("sunrise");
asetBaik.setText(baik);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
希望它能帮到你!!
答案 3 :(得分:0)
替换此代码
baik = Integer.parseInt(asetBaik.getText().toString());
baik = data.getInt("sunrise");
asetBaik.setText(baik);
到
baik = data.getInt("sunrise");
asetBaik.setText(String.valueOf(baik));
希望这会起作用