ギャラリーから写真を選択するか、カメラで新しい写真を撮る必要があるアプリケーションをビルドしています。私は、選択/撮影した写真を1つのアクティビティ、ギャラリーとしてメモリから写真を選択するアクティビティ、カメラで新しい写真を撮る1つのアクティビティを作成しました。私は何をしている:ユーザーがより多くの画像を取得するには、ボタンをクリックしたときに、私はこのような意図チューを開く:APIを使用していないアクティビティを終了するためのsetContent()
Intent galleryIntent = new Intent(Constants.INTENT_GALLERY);
Intent cameraIntent = new Intent(Constants.INTENT_PHOTO_CAPTURE);
Intent chooserIntent
= Intent.createChooser(galleryIntent, getString(R.string.title_photo_chooser));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { cameraIntent });
startActivityForResult(chooserIntent, Constants.SUCCESS);
そして、そのようなギャラリーやカメラアクティビティ仕上げ:
そして、で、API 16で私のタブレット上で動作しているとき、これは残念ながら、API 22と私の携帯電話上で成功を収めてきた
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == RESULT_OK){
if(requestCode == Constants.SUCCESS) {
[...]
}
}
}
:最後に、最初のアクティビティ、視聴者は、このような結果を取得します,resultCode
は決してRESULT_OK
ではなく、intent
は常にnullです。私はgetParent().setResult()
を呼び出すような多くのソリューションを見てきましたが、何も動作していないようです。
任意のヒントが便利です。ありがとう。私は、デバッガで両方のバージョンでの私の活動の内容を分析した
EDIT
。これらの州はfinish()
を呼び出す直前の私のGallery
アクティビティの状態です。 API 16日
mParent = null
mResultCode = -1
mResultData = {[email protected]} "Intent { (has extras) }"
mAction = null
mCategories = null
mClipData = null
mComponent = null
mContentUserHint = -2
mData = null
mExtras = {[email protected]} "Bundle[{photo=[/storage/emulated/0/DCIM/Camera/....jpg, ...]}]"
mFlags = 0
mLaunchParams = {[email protected]} "DualScreenLaunchParams { mScreen=UNKNOWN mFlags=0 }"
mMultiWindowStyle = null
mPackage = null
mSelector = null
mSourceBounds = null
mType = null
mWindowMode = 0
mWindowPosition = null
mWindowScale = 0.0
shadow$_klass_ = {[email protected]} "class android.content.Intent"
shadow$_monitor_ = -1875875432
、私はこれを持っている:API 22で、私はこれを持って
mParent = null
mResultCode = -1
mResultData = {[email protected]} "Intent { (has extras) }"
mAction = null
mCategories = null
mClipData = null
mComponent = null
mData = null
mExtras = {[email protected]} "Bundle[{photo=[/storage/sdcard0/Pictures/....jpeg, ...]}]"
mType = null
mPackage = null
mSelector = null
mSourceBounds = null
mFlags = 0
は違いがありますが、setContent()
はその仕事をしたようです。
上記のように、 'setResult()'は実際に_before_ 'finish()'と呼ばれています。しかし、それはそれを「それ」と呼ぶのは理にかなっていませんか?さらに、私が出会ったすべての答えにおいて、それは常に前に呼ばれています。 – Sunshinator