2017-03-07 9 views
1

から選択できませんでしたか?ギャラリーの画像をフラグメント

私はギャラリーから写真を選択し、その写真を自分のImageButtonのイメージとして設定しようとしています。それはかなりまっすぐ進むはずですが、どういうわけか私はそれを台無しにしています。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.d("---------", "activity result"); 
    if (requestCode == GALLERY_REQUEST && requestCode == getActivity().RESULT_OK){ 
     Log.d("-----------", "result ok"); 
     Uri imageUri = data.getData(); 
     postImageBtn.setImageURI(imageUri); 
    } else { 
     Log.d("-----------", "result not ok"); 
     Log.d("----------", String.valueOf(requestCode)); 
     Log.d("----------", String.valueOf(RESULT_OK)); 
    } 
} 

これらは私のログです:これは私のログと私のonActivityResultメソッドは

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    TabHost host = (TabHost)getView().findViewById(R.id.tabHost); 
    host.setup(); 

    //Tab 1 
    TabHost.TabSpec spec = host.newTabSpec("Foto"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Foto"); 
    host.addTab(spec); 

    //Tab 2 
    spec = host.newTabSpec("Sentimento"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("sentimento"); 
    host.addTab(spec); 

    //Tab 3 
    spec = host.newTabSpec("Medição"); 
    spec.setContent(R.id.tab3); 
    spec.setIndicator("Medição"); 
    host.addTab(spec); 

    cancelBtn = (ImageButton)getView().findViewById(R.id.cancel_post_btn); 
    saveBtn = (ImageButton)getView().findViewById(R.id.save_post_btn); 
    insertPostText = (EditText)getView().findViewById(R.id.insert_post_text); 

    postImageBtn = (ImageButton)getView().findViewById(R.id.post_img_btn); 
    postImageBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      galleryIntent.setType("image/*"); 
      startActivityForResult(galleryIntent, GALLERY_REQUEST); 
     } 
    }); 
} 

です:私は、私は私のタブと私のImageButtonを設定するフラグメントを持っている:これは私がしようとしている方法です結果:

03-07 14:23:50.767 30717-30717/? D/---------: activity result 
03-07 14:23:50.767 30717-30717/? D/-----------: result not ok 
03-07 14:23:50.767 30717-30717/? D/----------: 1 
03-07 14:23:50.767 30717-30717/? D/----------: -1 

そして最後に、これは私のアンドロイドマニフェストです:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

なぜこのようなことが起こったのか考えてみませんか?

+0

んギャラリーオープンを:私はこれが今どのように動作するかです

resultCode 

getActivity().RESULT_OK 

を比較すべきですか?アプリクラッシュ? – tahsinRupam

+0

はい、ギャラリーが開き、いいえ、アプリがクラッシュしません。私はImageButtonを更新することはできません。私のRESULT_OKは-1に等しいと思います – Rob

答えて

0

を使用していますが、それでも私は誰かがこの質問に達する念の答えを投稿する必要があります。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
Log.d("---------", "activity result"); 
if (requestCode == GALLERY_REQUEST && resultCode == getActivity().RESULT_OK){ 
    Log.d("-----------", "result ok"); 
    Uri imageUri = data.getData(); 
    postImageBtn.setImageURI(imageUri); 
} else { 
    Log.d("-----------", "result not ok"); 
    Log.d("----------", String.valueOf(requestCode)); 
    Log.d("----------", String.valueOf(RESULT_OK)); 
} 
} 
0

はこれにあなたのギャラリーの意図を変更してみてください:

Intent pickPhoto = new Intent(Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     if (isAdded() && pickPhoto.resolveActivity(getActivity().getPackageManager()) != null) 
      startActivityForResult(pickPhoto, requestCode); 

私は本当に恥ずかしい感じさせるContentProviderスタイルメカ