android中的旋转问题

时间:2011-05-18 05:01:12

标签: android android-layout

大家好我有一个小问题 实际上我有两个布局布局 - 端口和布局 - 土地 和2个屏幕。两种屏幕都采用两种布局模式 1)第一个屏幕是登录密码屏幕
2)第二个屏幕是ListView屏幕

现在每当我旋转手机时。它重新创建onCreate()方法。然后根据需要更改布局。

现在由于调用了onCreate(),我的列表数据被重新生成。如何克服这个问题。请告诉我..

我甚至尝试在清单文件中编写以下代码

android:configChanges="orientation|keyboard|keyboardHidden"

此代码的工作原理是它不会调用onCreate()方法,但现在的问题是,它也不会自动更改布局。 意思是如果我是肖像,然后将其旋转到横向,它将不会改变布局模式。 请指导我该怎么做。

提前感谢一堆

2 个答案:

答案 0 :(得分:2)

onRetainNonConfigurationInstance方法中保存一些值 所以你可以检查getLastNonConfigurationInstance()是否为空,如果只有空,你的列表数据只生成代码

即你在onCreate就是这样做的

final Object data = getLastNonConfigurationInstance();

    // The activity is starting for the first time
    if (data == null) {
        //code to generate list data 
    } else {
        // The activity was destroyed/created automatically

    }

请参阅此Faster Screen Orientation Change

答案 1 :(得分:-1)

它只是对你的问题进行攻击,而不是将你的xml放在不同的文件夹中,只将它们放在布局文件夹中并使它们的名字不同,现在代码

@Override
 public void onConfigurationChanged(Configuration newConfig)
 {
     super.onConfigurationChanged(newConfig);
             if(getScreenOrientation() == 2)
                  setContentView(landscape.xml);
             else
                  setContentView(portrait.xml);
 }

private int getScreenOrientation()
{
    return getResources().getConfiguration().orientation;
}

并在清单

android:configChanges="orientation|keyboard|keyboardHidden"