当我的屏幕方向在 android 中发生变化时,如何将复选框重置为未选中?



我有可以勾选的复选框。但是,如果选中这些,如果屏幕方向已更改,我希望将它们全部取消选中。我怎么能去做这样的事情?

onCreate()回调方法将使用 savedInstanceState 对象调用,因此您可以检查它是否不为 null,然后取消选中所有复选框。

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
if(savedInstanceState != null) {
// uncheck all of the checkboxes.
}
}

试试这个,

步骤 1 使用此方法循环 al 布局查找复选框并重置它们 void unCheckAllCheckBoxs(ViewGroup youRootView) {

for (int i = youRootView.getChildCount() - 1; i >= 0; i--) {
final View child = youRootView.getChildAt(i);
if (child instanceof ViewGroup) {
unCheckAllCheckBoxs((ViewGroup) child);
} else {
if ((child != null) && (child instanceof CheckBox)) {
CheckBox checkBox = (CheckBox) child;
checkBox.setSelected(false);
}
}
}
}

步骤2 overrige onConfigurationChanged 方法以检测方向变化,并在内部调用前一个 pethode 传递包含所有复选框作为参数的父根布局。

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
unCheckAllCheckBoxs((ViewGroup) findViewById(R.id.root));
}

现在让我,如果它有效.

我通过检查方向是否更改以及如果更改checkbox.toggle()来覆盖onConfigurationChanged来部分解决了该问题。唯一仍然存在的问题是,现在当方向更改并单击复选框时,它们不会在我的代码中设置对象的可见性,而不是在配置更改之前。

最新更新