大家好我有一个小问题
实际上我有两个布局布局 - 端口和布局 - 土地
和2个屏幕。两种屏幕都采用两种布局模式
1)第一个屏幕是登录密码屏幕
2)第二个屏幕是ListView屏幕
现在每当我旋转手机时。它重新创建onCreate()方法。然后根据需要更改布局。
现在由于调用了onCreate(),我的列表数据被重新生成。如何克服这个问题。请告诉我..
我甚至尝试在清单文件中编写以下代码
android:configChanges="orientation|keyboard|keyboardHidden"
此代码的工作原理是它不会调用onCreate()方法,但现在的问题是,它也不会自动更改布局。 意思是如果我是肖像,然后将其旋转到横向,它将不会改变布局模式。 请指导我该怎么做。
提前感谢一堆
答案 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
}
答案 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"