2017-05-27 10 views
0

私は自分のギャラリー内のイメージを選択して、自分のアクティビティ内にある既存のイメージを置き換えることを許可しようとしています(プログラムによってDB値に基づいて追加されました)。ここではいくつかの問題を引き起こしている私のコードの一部です:Android - getIntExtraはonActivityResultのデフォルト値になります

public void requestImage(int imageID){ 
    Intent intent = new Intent(); 
    intent.putExtra("imageID",imageID); 
    intent.setType("image/*"); 
    Log.v("requestImage",Integer.toString(intent.getIntExtra("imageID",0))); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     Uri uri = data.getData(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
      int imageID = data.getIntExtra("imageID",0); 
      Log.v("onactivityresult",Integer.toString(imageID)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

目標は、私がonActivityResultに至るまで、requestImageにして渡しているこの機能のために選択された画像のIDを取得することです。 onActivityResultには、ユーザーが選択したイメージに基づいてイメージのビットマップを設定するためのコードが含まれています(簡潔のためにコードサンプルから省略)。

ノートにつながる2つのログ・ステートメント、:

05-27 15:51:31.756 7769-7769/com.praytoday.app.praytoday V/requestImage: 12 

05-27 15:45:55.511 2037-2037/com.praytoday.app.praytoday V/onactivityresult: 0 

ロギング・ステートメントに気づくように、第一のログが実際に意図自体からint型を取得しているので、私は確信して、それがされています正しく設定されています(ここではタイプの問題はありません)。

データは同じ意図であってはなりません(インテントの知識に関する私の知識の欠如 - これは私にはかなり新鮮です)。

私が試してみました物事:getIntentを(使用

  • )の代わりに、データ
  • createChooserを使用して、代わりにちょうどこの私についてのすべての質問/答えを見てみると無地の意図
  • を使用していませんありがとうございます

なぜこの余分な値がデータ引数に含まれていないのか判断するのに役立ちます。前もって感謝します。

+0

私が正しく覚えていれば、渡されたインテントはあなたが渡したインテントではなく、そのインテントの引数が返されないことを意味します。しかし、私は間違っている可能性があります – Zoe

+0

それは本当に目的を破るように思える!何とか議論を引き継ぐことが可能でなければならないように思えます - 私は本当にこれが道だと思ったが、そうではないかもしれないと思う。 – 3nails4you

+0

私は長い間startActivityForResultを使用していませんでしたが、答えとして取り上げないでください。フレームワークのエラーの結果としてそれをリセットするものがあるかもしれません。 – Zoe

答えて

0

グローバル変数を設定して、現在どのイメージが置換用に設定されているかを保存するだけです。 requestImageはそれを現在のイメージIDに設定し、onActivityResultはその変数を使用します。それほどエレガントではありませんが、機能します!

関連する問題