试图显示字符串的问题

时间:2013-12-25 23:13:07

标签: android jsoup

所以,我得到了这个应用程序,它使用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();
    }

}

1 个答案:

答案 0 :(得分:0)

可能的原因是您在主线程中使用网络。您必须为SOAP请求创建另一个AsyncTask并在主线程中执行它。此外,从该线程返回字符串值,然后显示它。

Logcat在日志中显示字符串,因为它可以访问它,但主线程没有该字符串。这也将解释为什么应用程序正在开发2.3而不是4 +。