【问题标题】:prevent activity restarting when orientation changes防止在方向改变时重新启动活动
【发布时间】:2013-07-30 10:56:50
【问题描述】:

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

我试过了

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

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

【问题讨论】:

    标签: android android-activity xamarin.android xamarin android-orientation


    【解决方案1】:

    在你的活动中写下这段代码

    @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"
    

    所以这将处理这两个事情,它不会重新启动您的活动,并且会根据您的方向更改加载布局。

    【讨论】:

    • 11-07 13:44:47.143: E/AndroidRuntime(2586): Caused by: java.lang.IllegalStateException: You are only allowed to have a single MapView in a MapActivity 当 i包括这个
    • 在mainActivity的哪里添加这些代码或者activity中的每个Fragment和R.layout.landscapeView和R.layout.portraitView是两个不同的布局
    【解决方案2】:

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

    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
        }
    }
    

    【讨论】:

    • OnCreate() 方法被调用以改变方向。
    • @surjay 您需要在 Manifest 文件的 android:configChanges="keyboardHidden|orientation|screenSize。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多