我已在活动上设置android:configChanges="orientation|screenSize"
,以便在每次定向更改时停止重新启动活动。现在这个工作正常,但我认为它正在停止使用正确的布局。
E.G。我有不同的布局文件夹,用于不同的屏幕方向和大小。因此,如果我在portrait
中启动活动,当我将方向更改为landscape
时,它就不会使用我的横向布局。
此外,如果我在landscape
中开始活动,当我将方向更改为portrait
时,它不会使用我的纵向布局。
基本上我希望应用程序执行的操作不是在方向更改后再次启动活动,而是在方向更改时使用正确的布局!
我以为我可以使用onConfigurationChanged
方法明确更改代码中的布局?
感谢任何输入
答案 0 :(得分:1)
当您使用android:configChanges="orientation|screenSize"
时,这告诉Android您将自己维护这些更改 - 这意味着您必须更改布局(setContentView
)并手动初始化它(设置控件的值 - EditTexts ,纺纱等。)
答案 1 :(得分:0)
所以我最终做的是将android:configChanges="orientation|screenSize"
保留在清单文件中。这样做可以阻止我使用正确的布局文件夹进行纵向和横向处理。
要解决此问题,我会覆盖onConfigurationChange
方法,以便在方向更改后设置活动按预期运行所需的正确信息。下面是我用过的代码:
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
setContentView(R.layout.hearing_test);
//Any other information needed for the activity to work correctly
}
感谢@mihail提供的帮助和指导,帮助我解决了问题的根源。
答案 2 :(得分:-1)
这正是为什么 {@ 1}}被销毁和重新创建:应用新资源。
如果您的纵向和横向模式有不同的布局,请不要使用Activity
。