Android 防止在方向更改时重新启动活动

Android 防止在方向更改时重新启动活动,android,android-activity,xamarin.android,xamarin,android-orientation,Android,Android Activity,Xamarin.android,Xamarin,Android Orientation,我是android开发新手。我有单独的纵向和横向模式屏幕。当我改变方向时,相应的屏幕会被加载,活动会重新启动。现在,我不希望在更改方向时重新启动活动,但应该加载相应的屏幕(axml) 我试过了 [活动(标签= “MyActivity”,ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation)] 上述行停止重新启动活动,但加载相同的屏幕(axml)。 请建议。 谢谢因为您已向操作系统指定要自己处理方向更改,现在您必须自己处

我是android开发新手。我有单独的纵向和横向模式屏幕。当我改变方向时,相应的屏幕会被加载,活动会重新启动。现在,我不希望在更改方向时重新启动活动,但应该加载相应的屏幕(axml)

我试过了

[活动(标签= “MyActivity”,ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation)]

上述行停止重新启动活动,但加载相同的屏幕(axml)。 请建议。
谢谢

因为您已向操作系统指定要自己处理方向更改,现在您必须自己处理布局的任何更改,如下所示:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        setContentView(R.layout.portrait);
        //do other initialization
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscape);
        //do other initialization
    }
}

在活动中编写此代码

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscapeView);

    } else {
        setContentView(R.layout.portraitView);
    }
}
并在清单文件中添加这一行

android:configChanges="orientation|keyboardHidden|screenSize"

因此,这将处理这两件事,它不会重新启动您的活动,并将根据您的方向更改加载布局。

OnCreate()方法将被调用以进行方向更改。@surjay您需要在您的11-07 13:44:47.143:E/AndroidRuntime(2586)中添加
android:configChanges=“keyboardHidden | orientation | Screen size
:导致原因:java.lang.IllegalStateException:在MapActivity中只允许有一个MapView当我将此包含在mainActivity或activity中的每个片段中添加这些代码时显示此错误,R.layout.landscapeView和R.layout.肖像视图是两个不同的布局