从错误的线程异常调用

Jig*_*iya 1 android exception

请看我的代码..

public class BseDemo extends Activity {
    final String feedUrlString = "http://www.bseindia.com/sensex/xml-data/sensexrss.xml";
    Uri uri;
    TextView tvs,tvd;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        Bse b = new Bse();
        b.start();


    }
    class Bse extends Thread{
        public void run(){
            try {
                tvs = (TextView)findViewById(R.id.text);
                tvd = (TextView)findViewById(R.id.diff);
                URL url = new URL(feedUrlString);
                DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                Document doc = docBuilder.parse (new InputSource(url.openStream()));
                doc.getDocumentElement ().normalize ();
                Element e =  doc.getDocumentElement();
                NodeList nl = e.getElementsByTagName("title");
                Node bse = nl.item(2);
                String sen  = bse.getFirstChild().getNodeValue();
                tvs.setText(sen.substring(0, sen.indexOf("*")));
                tvd.setText(sen.substring(sen.indexOf("*")+1));
                tvd.setBackgroundResource(R.drawable.plus);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有上面提到的代码,我得到Exception CalledFromWrongTreadException 请给出一些解决方案.

Mar*_*oek 5

尝试实现AsyncTask从文档中获取String(在doInBackground)中然后使用onPostExecute在TextViews上设置Text.

在不阻塞UI线程的情况下,是执行后台逻辑的最佳方法.