3

私のアプリでは、onClick() でカメラの意図を呼び出す ImgButton で 2 番目のアクティビティを呼び出します。写真を撮った後、アクティビティに戻って、ユーザーがさらに写真を撮るかどうかを選択できる AlertDialog Box を表示します。私のマニフェストでは、デバイスを回転させると AlertBox が消えるため、2 番目のアクティビティの向きを縦向きにロックしました。

<activity android:name="SecondActivity"
            android:screenOrientation="portrait"></activity>

私のマニフェストでは、次のことも追加しました。

android:configChanges="orientation|keyboardHidden"

フルスクリーンモードの場合

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

写真を撮り、ポートレート モードから (デバイスを回転させずに) カメラ インテントを閉じると、2 つの異なるデバイスに問題があります。

HTC Desire: すべて正常に動作します。アプリケーションの状態を保存し、カメラからアクティビティに戻るとそれらを復元します:D

Galaxy S3*: sgs3 のカメラはデフォルトでランドスケープ モードで動作しているように見えますか? したがって、アクティビティに戻ると、アクティビティの表示内容は横向きモードでは瞬く間に表示され、すぐに縦向きモードに戻ります。しかし、向きが変わる前にAlertDialogが表示されるため、望ましくない回転の前にAlertDialogが消えます(したがって、アラートボックスが消えて回転がポートレートモードに戻る前に、横向きモードで0,1秒間だけAlertBoxが表示されます)...

ランドスケープ モードからカメラ インテントを終了した場合、デバイスに関係なく、問題は sgs3* と同じです。

カメラからアクティビティに戻った後、この画面の回転を防ぐにはどうすればよいですか? この望ましくない方向が変更された後、AlertBox を表示することはできますか? もしそうなら、どうすればこれを行うことができますか? または、他の回避策はありますか?

Thanks and sorry for my bad english ... xD

4

1 に答える 1

0

私は自分の問題を自分で解決しました:

AlertDialog[...].show();

そのonResume()ため、カメラのインテントからアクティビティに戻ると、AlertDialog は消えるのではなく、画面と共に回転します。

これにより、エラーが発生しますWindowManager

「[パッケージ名] 漏れたウィンドウ ...」

しかし、最終的には思い通りに機能し、アプリはクラッシュしません...

これが最善かつ正しい解決策であるかどうかはわかりませんが、うまくいきます。

于 2013-02-14T08:28:15.843 に答える