0

我是新的安卓开发者。

我正在尝试使用此代码从我的网络服务器访问数据....

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    URL url;
    try {
        url = new URL("http://www.mysite.net/LEDstate.txt");

        HttpURLConnection urlConnection = (HttpURLConnection) url
                .openConnection();

        InputStream in = urlConnection.getInputStream();

        InputStreamReader isw = new InputStreamReader(in);

        int data = isw.read();
        while (data != -1) {
            char current = (char) data;
            data = isw.read();
            //System.out.print(current);


            TextView t = (TextView) findViewById(R.id.ledstate);

            t.setText(current); 
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

但是数据没有出现在屏幕上。Textview 没有变化。

我检查了权限,他们没问题。

有什么帮助吗?谢谢。

4

2 回答 2

6

我猜你得到了NetworkOnMainThreadException,但是由于你正在捕获所有异常,所以错误被抑制了。

您不能在 Ui 线程上发出网络请求。将网络操作移至 Asynctask。

于 2012-11-20T07:37:52.917 回答
2

将while循环放在TextView外面

StringBuilder sb = new StringBuilder();
while (data != -1) {
        char current = (char) data;
        data = isw.read();
        sb.append(current); 
}

TextView t = (TextView) findViewById(R.id.ledstate);
t.setText(sb.toString());
于 2012-11-20T07:41:19.477 回答