我正在尝试在新线程中显示吐司。我研究过它,显然我需要在UI线程中运行toast。我需要这个新线程,因为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 :(得分:1)
请参考这个问题..
它显示了如何让应用程序的任何部分以静态方式访问Context
。
[Static way to get 'Context' on Android?]
为什么它没有内置到API中?我们永远不会知道..
HTH
答案 1 :(得分:0)
对于片段活动,将来您应该知道可以使用Fragment.this.getActivity()来获取Activity实例,从而获取上下文。这将帮助您使用其他仅需要的Activity方法。