我在Android中使用Json 1.9.2库来解析网站中的数据,然后将结果数据设置为Android中的TextView。但是我无法在TextView上设置获取的数据。
分享相关代码。我正在使用碎片。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tv1 = (EditText) getActivity().findViewById(R.id.trending_textView);
new Title().execute();
}
private class Title extends AsyncTask<Void, Void, Void> {
String title;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Fetching the latest trends");
mProgressDialog.setMessage("#Trends");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
public Void doInBackground(Void... params) {
try {
doc = Jsoup.connect(url).get();
Elements links = doc.getElementsByTag("a");
for (Element link : links) {
//String linkHref = link.attr("href");
linkText = link.text();
//System.out.println("#"+linkText);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(Void result) {
tv1.setText(linkText.toString());
mProgressDialog.dismiss();
}
}
非常感谢任何帮助。
答案 0 :(得分:0)
您必须通过在doInbackground()方法中返回结果将任务结果发布到UI线程中 并且你将在onPostExecute()中接收结果作为参数,然后你从那里填充视图,因为onPostExecute()在UI线程中运行 欲了解更多信息: -
https://developer.android.com/reference/android/os/AsyncTask.html
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tv1 = (EditText) getActivity().findViewById(R.id.trending_textView);
new Title().execute();
}
private class Title extends AsyncTask<Void, Void, Elements> {
String title;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Fetching the latest trends");
mProgressDialog.setMessage("#Trends");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
public Elements doInBackground(Void... params) {
Elements links ;
try {
doc = Jsoup.connect(url).get();
links = doc.getElementsByTag("a");
} catch (Exeption e ) {
return null ;
}
return links;
}
@Override
public void onPostExecute(Elements ...links) {
if(links.get(0) == null) return ;
for (Element link : links.get(0)) {
//String linkHref = link.attr("href");
linkText = link.text();
// u might add scrolling behavior
tv.append(linktext + "\n");
//System.out.println("#"+linkText);
}
}
}