Android屏幕方向处理对Spinner控件的影响

5

我有一个活动,其中包含一个下拉框。由于竖屏和横屏模式下的布局不同,所以我在onConfigurationChanged方法中更改了布局。

@Override
    public void onConfigurationChanged(Configuration conf) {
        super.onConfigurationChanged(conf);
        setContentView(R.layout.layout);
        initUI();
    } 

但问题是当我改变方向时,我的旋转器被重新创建,所以如果在纵向模式下旋转器是打开状态,在横向模式下它会关闭。我的需求是:无论在哪种模式下打开,方向改变后它都应该保持打开状态。请问应该如何处理这种情况?

我没有尝试过,但是在spinner中有osavestate和restore这两种方法。尝试一下吧。 - Tofeeq Ahmad
我认为你可以在这里找到你问题的解决方案..... http://developer.android.com/resources/articles/faster-screen-orientation-change.html - himanshu
3个回答

0
尝试使用Spinner的performClick()方法。

-1
为了防止Spinner的重新创建,你可以在Manifest文件中添加以下内容。
<activity android:name=".Activity_name"
          android:configChanges="orientation|keyboardHidden">

但是如果添加此内容,当您旋转设备时,布局不会自动更改,因此您需要手动管理如下:

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
            setContentView(R.layout.login_landscape);
        }
        else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            setContentView(R.layout.login);         
        }
    }

要了解更多信息,你可以在这里查看我的答案。


我正在做同样的事情,但在设置布局之后仍然需要设置Spinner的值,否则Spinner将为空白。 - Connecting life with Android
尝试使用上述代码,它将保持状态。因为Activity不会重新创建。 - Lalit Poptani
我尝试了上面的代码。我在下拉列表框中看到空白,因为我在纵向模式下有一个下拉列表框,并且在横向模式下有一个具有相同 ID 的另一个下拉列表框。 - Connecting life with Android

-1

当屏幕方向发生变化时,将调用destroy方法并重新创建activity。为了避免调用destroy方法,您需要在清单文件中添加以下代码。但是,在这种情况下,只能使用一个布局,如果要重新定位内容,则需要动态完成。

android:configChanges="orientation|keyboardHidden"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接