web-dev-qa-db-ja.com

Androidで向きが変わったときにアクティビティを再開しないようにする方法

Androidアプリを作成しています。このアプリでは、キャンバスにビューを描画しています。デバイスの向きが変わると、アクティビティが再起動します。

向きが変わったときにアクティビティを再開しないようにするにはどうすればよいですか?

57
chirag

さまざまな方法がありますが、 here のように、

Android:configChanges="keyboardHidden|orientation|screenSize"

必要に応じて、代わりに構成の変更をリッスンできます。その後、onConfigurationChangedをオーバーライドしてsetContentViewを呼び出すことにより、これらの変更に対応します。

これは私がやってきた方法ですが、他の人の考えを知りたいと思います。

84
Mike

AndroidManifest.xmlでアクティビティを次のように定義します。

   <activity
        Android:name="com.name.SampleActivity"
        Android:configChanges="keyboardHidden|orientation|screenSize"
        Android:icon="@drawable/sample_icon"
        Android:label="@string/sample_title"
        Android:screenOrientation="portrait" >
    </activity>
16
Vikas

Android作成したマニフェストファイルAndroid:configChanges="orientation"アクティビティについて。

11
ninjasense

Android:configChanges="keyboardHidden|orientation"activityに追加します

7
Avadhani Y

アクティビティタグにAndroid:configChanges="keyboardHidden|orientation|screenSize"を記述しようとしましたが、動作しません。

多くの方法を試しましたが、すべてのアプリアクティビティAndroid:configChanges="keyboardHidden|orientation|screenSize"を追加するまで何も機能せず、完全に機能します。

7

フラグメントの使用をお勧めします。 setRetainInstance(true)を使用して、フラグメントを保持することを通知できます。

6
Grimmace

xamarinユーザーの場合、

Androidの向きの変更時にアプリケーションが再起動しないようにするには、これを追加します

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize

すべてのアクティビティクラスのアクティビティ属性に。たとえば、以下は私のデモコードです

    [Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
        //Some code here
        }
    }
6
Tushar patel

これをマニフェスト内のすべてのアクティビティに追加します。

Android:configChanges="orientation|screenSize"

例:

<activity Android:name=".activity.ViewActivity"
        Android:label="@string/app_name"
        Android:configChanges="orientation|screenSize"/>
3
Mohsen mokhtari

keyboardHidden|orientationでの再起動を回避するには- Androidで方向の変更を無効にする方法
に従ってくださいAndroid APIガイド- ランタイム変更の処理
アプリケーションクラスの使用- Androidの回転時のアクティビティの再起動

2
Rupesh Yadav

マニフェストファイルのすべてのアプリアクティビティにAndroid:configChanges = "keyboardHidden | orientation | screenSize"を追加するだけです

0
Charpman

これをAndroidManifest.xmlで宣言します

<activity Android:name=".complex_examples.VideoPlayerActivity"
            Android:configChanges="keyboard|keyboardHidden|orientation
                                  |screenSize|screenLayout|smallestScreenSize|uiMode"
            Android:launchMode="singleTop"/>

しかし、気をつけてくださいAndroid Developers Documentation は、より良いオプションが残っていない場合にのみ行うべきだと言います。

注:この属性の使用は避け、最後の手段としてのみ使用してください。設定変更による再起動を適切に処理する方法の詳細については、ランタイム変更の処理をご覧ください。

確実に実行できる場合は、自分で onConfigurationChanged() メソッドで構成の変更を処理できます。

0
Soon Santos