0

次のような ByteArrayEntity があります。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
tempPic.compress(CompressFormat.PNG, 0, bos);
byte[] bitmapdata = bos.toByteArray();
photoByteArray = new ByteArrayEntity(bitmapdata);

tempPicタイプandroid.graphics.Bitmapです。

私がしなければならないことは、Objects後でさまざまな型にキャストする配列を取る AsyncTask を使用してリクエストを作成することです。ただし、後で ByteArrayEntity をキャストしようとすると、 が表示されClassCastExceptionます。誰かがこれを説明できるかどうか疑問に思っていましたか?

protected HttpResponse doInBackground(Object... httpRequest) 
{
    ByteArrayEntity dataPhoto = null;

    // Further code


    if(myCondition)
    {
        dataPhoto = (ByteArrayEntity)httpRequest[2];
    }

}

私は本当にこれを機能させる必要がありますが、現在これを完全に再実装する時間がないので、ハックや回避策をいただければ幸いです。Android 2.2で作業しています

全体の目的は、Android カメラから画像を取得し、次に私のsetEntity画像をサーバーに取得し、サーバーで処理することです。HttpRequestByteArrayEntityPOST

4

2 に答える 2

2

を渡してObject[]から配列内の位置に基づいてキャストするのではなく、単に Bean を渡してみませんか?

public class MyBean {
    private ByteArrayEntity myByteArrayEntity;
    private String someString;

    // getters and setters
}

キャストは不要で、保守/拡張がはるかに簡単です。

于 2011-03-25T16:06:51.830 に答える
0

AsyncTaskキャストする必要がないように、別の型のパラメーター化を使用する場合があります。匿名クラスを使用している場合:

new ArrayTask<ByteArrayEntity, Void, HttpResponse>() {
    ...

あなたができるように:

@Override
protected HttpResponse doInBackground(ByteArrayEntity... byteArrays) {
    ...
    dataPhoto = byteArrays[2];
    ...

引数が実際に type であることを意図している場合ByteArrayEntity

于 2011-03-25T15:41:42.903 に答える