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

TextViewwhile ループの外側に置く

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 に答える