2013-03-31 116 views
0

我正嘗試在新線程中顯示敬酒。我研究了它,顯然我需要在UI線程中運行敬酒。我需要這個新線程,因爲Android不希望我在主線程中運行HTTPclient。我可以處理一個處理程序,但我的問題是,我無法想出一個方法來獲取MainActivity上下文到我所在的類中。它擴展了SherlockFragment,構造函數可能不會允許它覆蓋。在新線程中敬酒

這是我作爲可運行的時刻

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("https://www.example.com/API/events/add.php"); 

     try { 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(16); 
      httppost.getParams().setParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, Boolean.FALSE); 

      // Adding data 
      nameValuePairs.add(new BasicNameValuePair("token", "admin")); 
      nameValuePairs.add(new BasicNameValuePair("eventTitle", title)); 
      nameValuePairs.add(new BasicNameValuePair("categories", Integer.toString(catId))); 

      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 

      String status = EntityUtils.toString(response.getEntity()); 
      JSONObject jObj = null; 

      try { 
       jObj = new JSONObject(status); 
      } catch (JSONException e) { 
       Log.e(MainActivity.class.getName(), "Error Parsing Data: " + e.toString()); 
      } 

      try { 
       //Want to toast this string here, jObj.getString("status")) 
      } catch (JSONException e) { 
       Log.e(MainActivity.class.getName(), "Error Reading Status String: " + e.toString()); 
      } 

     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
     } 
    } 
}).start(); 

爲我可能會做的任何建議?

+0

只需調用getActivity()來獲取上下文。 –

回答

1

請參考這個問題..

它顯示瞭如何讓的以靜態方式應用程序訪問Context任何部分。

[Static way to get 'Context' on Android?]

爲什麼沒有內置的API?我們永遠不會知道..

HTH

+0

非常感謝你,這工作完美。 – kotsumu

+0

不客氣...請標記爲答覆:) – Madushan

0

對於片段活動,在未來,你應該知道,你可以做Fragment.this.getActivity()來獲取活動實例,因此環境。這將幫助您使用其他僅限於Activity的方法。