循环错误时Android应用程序

时间:2013-05-14 08:10:49

标签: android while-loop

我的合作伙伴计算机中有一个文本文件,托管在服务器上。我正在尝试检索Android应用程序中文本文件中的所有字符串值。但是,我的应用程序没有输入while循环方法来读取文本文件。有办法解决吗?我的计算机已连接到我的合作伙伴服务器。

方法的代码。

connect.setOnClickListener(new View.OnClickListener(){
     public void onClick(View v){
         Thread trd = new Thread(new Runnable(){
             @Override
             public void run(){
                 //code to do the HTTP request
                 try {
                     URL url = new URL("insert url");//your website link
                     HttpURLConnection con = (HttpURLConnection)url.openConnection();
                     BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                     String line;
                     while((line = br.readLine()) != null){
                         result.setText(line);
                     }
                     con.disconnect();
                 } catch(IOException e) {
                     System.out.println("Error");
                 }
             }
        });
        trd.start();
    }
});
}

3 个答案:

答案 0 :(得分:0)

while((line = br.readLine()) != null)  {

   result.setText(line);

}

结果无法在与UI THread不同的线程中运行。 使用

while((line = br.readLine()) != null)  {
final String finalLine = line;

runOnUiThread(new Runnable() {
 @Override
 public void run() {
       result.setText(finalLine);
  }
});
}

答案 1 :(得分:0)

试试这个

 URL url= new URL("insert url");
    BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
    StringBuilder result= new StringBuilder();
                String line;
                while ((line = br.readLine()) != null) {
                    result.append(line + "\n");
                }

                TextView.setText(result);

答案 2 :(得分:0)

这可能是因为NetworkOnMainThreadException

HttpURLConnection con = (HttpURLConnection)url.openConnection();被解雇了

您不应该在蜂窝及以上版本的主线程上执行网络操作,这会导致此错误。因为它永远不会执行while循环。

使用AsyncTask代替执行网络操作。这是一个链接:How to fix android.os.NetworkOnMainThreadException?