【问题标题】:Toast in new Thread在新线程中吐司
【发布时间】:2013-03-31 01:13:34
【问题描述】:

我正在尝试在新线程中显示祝酒词。我对其进行了研究,显然我需要在 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();

对我可以做什么有什么建议吗?

【问题讨论】:

  • 只需调用getActivity() 即可获取上下文。

标签: java android multithreading toast runnable


【解决方案1】:

请参考这个问题..

它展示了如何让应用程序的任何部分以静态方式访问Context

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

为什么它没有内置在 API 中?我们永远不会知道..

HTH

【讨论】:

    【解决方案2】:

    对于片段活动,将来您应该知道可以执行 Fragment.this.getActivity() 来获取 Activity 实例,从而获取上下文。这将帮助您使用您需要的其他仅限 Activity 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多