35

インテントを使用して写真を撮ろうとしています。私の問題は、写真を撮った後、startActivityForResult を呼び出すアクティビティが破棄されたように見えることがあるため、onCreate が再度呼び出されることです。

イメージビューをクリックした後に写真を撮るための私のコードは次のとおりです。どのイメージを置き換える必要がありますか。

if (!getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA)) {
            Util.makeLongToast(R.string.lang_no_camera);
        } else {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, TAKE_ITEM_PHOTO);
        }

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.v(TAG, "onactivityresult called");
    if (requestCode == TAKE_ITEM_PHOTO) {
        if (data != null) {

            imageUri = data.getData();


                try {
                    img_photo.setImageBitmap(Media.getBitmap(
                            getContentResolver(), imageUri));
            } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

        } else
            Log.w(TAG, "data is null");
    }
}

だから私がしようとしているのは、写真を撮ってイメージビューの画像を置き換えることだけです。ただし、場合によっては、onActivityResult が呼び出された後に onCreate が呼び出され、新しいイメージが失われます。

助けていただければ幸いです。

4

4 に答える 4

112

実際には、カメラによってアクティビティの向きが変化するため、アクティビティが破棄されて再作成されます。

これをマニフェスト ファイルに追加すると、方向の変更が防止され、アクティビティが破棄されたり再作成されたりすることがなくなります。

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait" >
</activity>
于 2012-05-02T09:58:53.277 に答える
1

back/finish() アクティビティと同時に方向を変更すると、アクティビティが更新され、自動的に再起動されるため、アクティビティ/アプリケーションの方向を修正します。

于 2012-05-02T09:35:53.860 に答える