このフラグメントをホストするアクティビティは、onActivityResult
カメラ アクティビティが返されたときに呼び出されます。
私のフラグメントは、写真を撮るためにカメラにインテントを送信した結果のアクティビティを開始します。写真アプリケーションは正常に読み込まれ、写真を撮って戻ります。ただし、onActivityResult
はヒットしません。ブレークポイントを設定しましたが、何もトリガーされません。フラグメントに はありますかonActivityResult
? 提供されている関数なので、そうだと思います。なぜこれがトリガーされないのですか?
ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image);
myImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 1888);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == 1888 ) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo);
}
}
ベストアンサー1
ホスティング アクティビティは をオーバーライドしますonActivityResult()
が、未処理の結果コードに対して を呼び出しませんでしたsuper.onActivityResult()
。どうやら、フラグメントが呼び出しを行っているにもかかわらずstartActivityForResult()
、アクティビティが最初に結果を処理するようです。フラグメントのモジュール性を考慮すると、これは理にかなっています。super.onActivityResult()
すべての未処理の結果に対して を実装すると、フラグメントが結果を処理するようになりました。
また、@siqing からの回答:
フラグメント内で結果を取得するには、フラグメント内でstartActivityForResult(intent,111);
はなくを呼び出すようにしてください。getActivity().startActivityForResult(intent,111);