您需要将视图的状态保存在已保存的声明捆绑包中,以便在屏幕旋转后恢复视图。
首先,您需要用某种简单的结构来表示按钮的状态。一个快速的解决方案就是创建一个逗号分隔的列表,其中的值表示从0到8的按钮状态(9个可能的按钮)。例如:
"O,X,O,-,-,O,X,X,-"
。
之后,您需要将按钮状态保存在:
@Override
protected void onSaveInstanceState(@NonNull final Bundle outState) {
super.onSaveInstanceState(outState);
final String screenState = // ... loop to generate screen state
outState.putString("some_key", screenState);
}
和
onCreate()
如果捆绑包中存在该值,则需要恢复屏幕:
@Override
public void onCreate(@Nullable final Bundle savedInstanceBundle) {
if (bundle != null) {
final String state = bundle.getString("some_key");
if (state != null) {
// ... restore state
}
}
}
注意:我同意前面的答案,屏幕状态不应该以这种方式存储在视图中,但我只是想提供一个简单的答案,而不涉及应用程序架构的复杂性。