これには 2 つのフラグメントを使用できます。
最初のフラグメントには、カメラ ボタンのあるレイアウトがあります。2 番目のフラグメントには、プレビューと 2 つのボタンが受け入れ/キャンセルされます。
バックスタックを使用して、キャンセル (またはユーザーが戻る) で最初のフラグメントに戻ることができます。
フラグメントを別のフラグメントに置き換える方法を示す Fragments チュートリアル (http://developer.android.com/guide/components/fragments.html) のコードを次に示します。
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
また、キャンセル ボタンは popBackStack() を使用してバック スタックからフラグメントをポップできます (ユーザーによる Back コマンドをシミュレートします)。
別のオプションもあります。プレビューのカスタム レイアウトが必要ない場合は、カスタム カメラの使用をスキップして、startActivityForResult を使用してインテントとしてカメラを開くことができます。このインテントは、ユーザーが写真を撮ることを許可し (この場合、結果の写真をメインのアクティビティと通信します)、写真を撮らずにアプリに戻るキャンセル ボタンもあります。