我对我的活动有25 edittexts
和其他观点。我在main.xml
和layout
中创建了不同的layout-land
个文件,因此将根据切换模式显示相应的 UI ( 肖像或横向)。
但在edittexts
填充值后,如果我从人像更改为格局,之前的值丢失 。所以,我怀疑的是,即使在更改<之后,如何获取来自edittexts
和恢复各自edittexts
的值的值 / strong>到其他模式。
当然我知道当我们切换模式时,活动重新创建会导致数据丢失。我在开发人员指南中修改了Handling Runtime changes
,但作为一个新手,我无法理解像onRetainNonConfigurationInstance()
方法一样保存数据,因为它返回对象,但在我的应用中,我需要输入的数字即使在切换之后,edittexts
也会在edittexts
上。
已提及很多问题,例如link等,即使在 stackoverflow 上,但我无法找到问题的解决方案。请为此建议解决方案。
即使我有另一个问题。我在dialog
首次启动时会弹出一个activity
,在切换模式时我也不希望这个popup
。请为这两个建议解决方案。如果有人需要代码段以获得更多说明,请告诉我们。我将用代码编辑我的问题。
答案 0 :(得分:1)
如果您的数据较少,则可以使用onSavedInstanceState
和onRestoreInstanceState
保存并获取数据..有关详细信息,请点击此链接Saving Data
但是如果您有大量数据,那么我必须说您不应该允许方向更改,您可以通过在清单文件中添加以下行来限制它:
android:configChanges="orientation|keyboardHidden"
以上行修正了方向,但在这种情况下,您的layout-land
无效,但您可以在onConfigurationChanged()
方法
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
align_landscape(); // align your view dynamically here for landscape
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
align_portrait(); // align your view dynamically here for portrait
}
}
答案 1 :(得分:0)
您可以在方向更改时存储编辑文本值,然后切换到新布局并指定保存的值。
通过在清单中指定以下条件,您可以检测方向更改。
android:configChanges="orientation"
在onConfigurationChanged()方法中,存储各个字段的值,然后您可以使用setRequestedOrientation(int requestedOrientation)
方法更改方向,该方法将更新为您的自定义布局,然后恢复字段的值。