2014-06-23 50 views
0

我需要連接到postgreSQL。當我嘗試運行這段代碼時,得到的異常是:NetworkOnMyThreadExcepion。我做了新的線程,但它仍然是同樣的問題。NetworkOnMyThreadExcepion在新主題內

... 
final ErrorFragment error = new ErrorFragment(); 
... 

new Thread(new Runnable(){ 
    public void run(){ 
     /* Properties prop, String url*/ 
     try { 
      Connection conn = DriverManager.getConnection(url, prop); 
     } catch (final SQLException e) { 
      MainActivity.this.runOnUiThread(new Runnable(){ 
       public void run(){ 
        error.setArguments(exceptionToBundle(e)); 
        error.show(getFragmentManager(), "tagError"); 
       } 
      }); 
     } 
    } 
}).run(); 

... 
private Bundle exceptionToBundle(Exception e){ 
... 
} 
+7

使用'開始的()''而不是運行()' – tyczj

回答

0

正如@tyczj已經提到的,你必須使用start()啓動Threadrun()是將在新的Thread中執行的方法。如果直接撥打run(),則可在當前的Thread上運行您的代碼。

因此,不是這樣的:

new Thread(...).run(); 

試試這個:

new Thread(...).start(); 
+0

是的,就是這樣。現在是工作。 – user3767457