我正在开发一个Android应用程序,在那里我用点击替换片段。我有横向和纵向模式的单独设计。但问题是,当我改变方向时,活动刷新并且按钮保持未被点击,我尝试给予
android:configChanges="orientation|keyboardHidden"
但没有用,虽然将其设置为屏幕尺寸没有采用其他布局设计,请建议如何克服这个问题,不要刷新方向更改的活动,但仍然接受其他布局。
答案 0 :(得分:8)
在API级别12以上,我们还需要添加screenSize以防止与方向一起刷新。
android:configChanges="orientation|keyboardHidden|screenSize"
答案 1 :(得分:1)
使用onSaveInstanceState
存储按钮状态或任何其他状态,并使用提供的onCreate
在Bundle
中将其恢复。
如果您使用的是CompoundButton
按钮(例如CheckBox
),系统会自动为您保留其状态。
答案 2 :(得分:1)
正如Gorski所说,onSaveInstanceState & onViewStateRestored(对于片段)是存储片段或活动状态的方式
onSaveInstanceState:在片段暂停或停止时调用
onViewStateRestored : 片段返回时调用
例如:
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
outState.putParcelableArrayList(Keys.CURRENT_OPERATIONS.name(), operations);
firstCall = true;
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
if (firstCall)
operations = savedInstanceState.getParcelableArrayList(Keys.CURRENT_OPERATIONS.name());
super.onViewStateRestored(savedInstanceState);
}