2013-05-14 57 views
0

我在服務器上託管的合作伙伴計算機中有一個文本文件。我試圖檢索我的Android應用程序中的文本文件中的所有字符串值。但是,我的應用程序不會輸入while循環方法來讀取文本文件。有沒有辦法解決它?我的電腦連接到我的合作伙伴服務器。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(); 
    } 
}); 
} 
+0

你是否在logcat中發生異常?像NetworkOnMainThreadException? – 2013-05-14 09:16:40

+0

nope,該應用程序有一個問題,試圖追查我的文件或目錄 – 2013-05-15 02:12:44

回答

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

    result.setText(line); 

} 

結果不能從UI線程不同的線程運行。 使用

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

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

我得到了「無法引用一個不同的方法定義的內部類中的最終變量finalLine」錯誤 – 2013-05-14 08:33:42

+0

請參閱我的編輯。我添加了最後一個關鍵字 – Blackbelt 2013-05-14 08:38:26

+0

現在,在eclipse上進行調試後,在bufferedreader行之後,它立即跳轉到catch catch行。應用程序沒有進入while循環,可能是什麼問題? – 2013-05-14 08:44:49

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); 
+0

它仍然無法正常工作。我的應用程序仍然無法跟蹤我的合作伙伴服務器中的文件 – 2013-05-15 01:32:03

0

這是在HttpURLConnection con = (HttpURLConnection)url.openConnection();

你不應該在主線程從蜂窩及以上版本執行網絡操作的時候打響了NetworkOnMainThreadException可能是因爲這導致了這個錯誤。正因爲如此,while循環從未被執行。

改爲使用AsyncTask來執行網絡操作。這裏有一個鏈接:How to fix android.os.NetworkOnMainThreadException?

+0

我已經使用新的線程方法在另一個線程上運行連接 – 2013-05-15 01:33:02