我正在开发一个 android 应用程序,在那里我替换点击片段。我有横向和纵向模式的单独设计。但问题是,当我改变方向时,活动刷新并且按钮保持未点击,我尝试给
android:configChanges="orientation|keyboardHidden"
但没有用,另外将其设置为屏幕大小并没有采用其他布局设计,请建议如何克服这个问题,不刷新方向更改的活动但仍接受其他布局。
我正在开发一个 android 应用程序,在那里我替换点击片段。我有横向和纵向模式的单独设计。但问题是,当我改变方向时,活动刷新并且按钮保持未点击,我尝试给
android:configChanges="orientation|keyboardHidden"
但没有用,另外将其设置为屏幕大小并没有采用其他布局设计,请建议如何克服这个问题,不刷新方向更改的活动但仍接受其他布局。
在 API 级别 12 之上,我们还需要添加 screenSize 以防止与方向一起刷新。
android:configChanges="orientation|keyboardHidden|screenSize"
用于onSaveInstanceState
存储按钮的状态或任何其他状态,并onCreate
使用提供的恢复它Bundle
。
如果您使用的是CompoundButton
(like CheckBox
) 按钮,它将自动为您保留其状态。
正如Gorski所说,onSaveInstanceState & onViewStateRestored (for Fragment) 是存储 Fragment 或 Activity 状态的方式
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);
}