0

メソッドに asynctask を実装しようとしていますが、エラーが発生しました。何が問題なのか、どこで間違ったのかわかりません。

以下は私のコードです

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]);

したがって、これは asynctask に渡される最初の文字列を取得します。

ご不明な点がございましたら、お知らせください。

于 2012-11-14T10:02:26.720 に答える
2

このエラーは、間違ったパラメーター タイプでメソッドを呼び出そうとしていることを示しています。Stringメソッドは2 番目のパラメーターとしてa を想定していますが、 String[](String array) を使用しています。

この場合、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 に答える