所以,我得到了这个应用程序,它使用Jsoup从网站获取一些文本,然后用该文本设置TextView
。
我从网站上获取文本的部分似乎没问题。如果我使用Log.d("", StringWithTheText);
,它会在Logcat中显示文本。
问题在于,当它设置TextView
时,它只是空白。
此外,如果我尝试将此文字放在Toast
上,Toast
也会为空。
Logcat中没有抛出异常。
该应用程序在我的手机上运行正常(使用Android 2.3),但在模拟器中发生错误(使用Android 4.1)。
关于可能导致此问题的任何想法?
代码的重要部分:
public void novasInf() throws Exception {
Document doc;
doc = Jsoup.connect(StringURL).get();
Element tituloH1 = doc.select("h1").first();
titulo = tituloH1.text();
Element text = doc.select("div.entry").first();
Elements paragrafos = text.getElementsByTag("p");
String textoFinal = "";
for (Element x:paragrafos) {
if (x.text().equals(".")) {
//Fazer nada.
}
else {
textoFinal += x.text()+"\n";
}
}
texto = textoFinal;
}
private class resolveIMG extends AsyncTask<String, Void, Bitmap> {
ProgressDialog pDialog;
@Override
protected Bitmap doInBackground(String... arg0) {
// TODO Auto-generated method stub
try {
//...
novasInf();
//...
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return bmp;
}
@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
try {
pDialog.dismiss();
ivIMG.setImageBitmap(result);
tvTitulo.setText(titulo);
tvTexto.setText(texto);
primeiraVez = false;
llP.setVisibility(View.VISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pDialog = ProgressDialog.show(Principal.this, "", "Carregando...", true);
pDialog.show();
}
}
答案 0 :(得分:0)
可能的原因是您在主线程中使用网络。您必须为SOAP请求创建另一个AsyncTask并在主线程中执行它。此外,从该线程返回字符串值,然后显示它。
Logcat在日志中显示字符串,因为它可以访问它,但主线程没有该字符串。这也将解释为什么应用程序正在开发2.3而不是4 +。