0

我正在尝试为一个方法实现一个异步任务,但我遇到了一个错误。我不知道是什么问题或我做错了什么。

下面是我的代码

class abc extends AsyncTask<String, String, String> {
    protected String doInBackground(String... message) {
        Bundle parameters = new Bundle();
        parameters.putString("message", message);
        parameters.putString("description", "topic share");
        try {
            facebook.request("me");
            String response = facebook.request("me/feed", parameters, "POST");
            Log.d("Tests", "got response: " + response);
            if (response == null || response.equals("")
                    || response.equals("false")) {
                showToast("Blank response.");
            } else {
                showToast("Message posted to your facebook wall!");
            }
            finish();
        } catch (Exception e) {
            showToast("Failed to post to wall!");
            e.printStackTrace();
            finish();
        }
        return null;
    }
}

这是我出错的部分

parameters.putString("message", message);

错误提示: Bundle 类型中的 putString(String, String) 方法不适用于参数 (String, String[])

4

2 回答 2

3

问题在于这个

String... 是一种数据类型,它接受一组字符串。所以你不能将它类型转换为字符串。

我了解您的问题,最简单的解决方法是

改变

parameters.putString("message", message);

parameters.putString("message", message[0]);

所以这将把第一个字符串传递给异步任务。

如果您有任何问题,请告诉我。

于 2012-11-14T10:02:26.720 回答
2

该错误表明您正在尝试使用错误的参数类型调用方法。该方法需要 aString作为第二个参数,但您使用的是String[](字符串数组)。

在这种情况下,此错误的解决方案相当简单,因为 Android API 提供了一种用于String[]. 只需更换

parameters.putString("message", message);

parameters.putStringArray("message", message);

因为您只希望第一个元素使用此代码。它检查数组的长度以避免ArrayOutOfBoundsException.

if (message.length > 0) {
    parameters.putString("message", message[0]);
}
于 2012-11-14T09:57:49.933 回答