イメージをキャプチャするためのカメラの意図を持つAndroidアプリを開発しています。私のアプリはどんな向きにも限定されていないので、ユーザーは両方のアプリケーションでクラッシュし、縦書きで起動し、横長の画像を撮り、横長のOKを押すとアプリケーションがクラッシュする。ポートレートと風景の向きが違うので、私のマニフェストで:android:configChanges = "orientation | keyboardHidden | screenSize"を使いたくありません。私は "savedInstanceState"を使用しようとしましたが、保存する必要のあるデータと保存されたインスタンスを呼び出す必要がある場所がわからないため、成功しませんでした。オリエンテーションの変更が発生したときにsavedInstanceStateを使用してカメラ情報を保存する方法
エラー: java.lang.RuntimeException:アクティビティを再開できません{.MainActivity}:java.lang.RuntimeException:結果の配信に失敗しましたResultInfo {who = null、request = 0、result = -1、data =活性{.MainActivity}にヌル}:java.lang.NullPointerExceptionが:
注 保護ボイドonActivityResult(INT requestCode、INT resultCodeが、インテントデータ){:撮像画像における意図を介して別のアクティビティに送信します ... }
ここに私のコードです:
takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null) {
File exportDir = new File(Environment.getExternalStorageDirectory(), "TempFolder");
if (!exportDir.exists()) {
exportDir.mkdirs();
} else {
exportDir.delete();
}
mTempCameraPhotoFile = new File(exportDir, "/" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
Log.d(TAG, "path to file: " + "/" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempCameraPhotoFile));
startActivityForResult(takePictureIntent, REQUEST_CAMERA);
}
onActivityResult
if (requestCode == REQUEST_CAMERA && resultCode == RESULT_OK) {
Intent intent = new Intent(MainActivity.this, CameraActivity.class);
//intent.putExtra("ID_EXTRA", new String[] { bytes.toByteArray(), "Load_Image"});
intent.putExtra("imageUri", Uri.fromFile(mTempCameraPhotoFile));
//intent.putExtra("imageUri", outputFileUri);
intent.putExtra("Title", "Take_Image");
startActivity(intent);
ローテーション後にnullになる変数インスタンスを使用しています。使用前にヌルを確認してください。あなたのアプリはNullPointerException is notでクラッシュしますか? – greenapps
はい、データがnullになり、カメラからデータを保存する方法がわからない場合はnull値が原因です。私がconfigChanges = orientationを使用すると、これは問題を解決しますが、私はこれを使いたくありません。 – Nani
私はIgorがonSaveInstanceState()を使ってコメントを削除した理由を知りました。 – greenapps