gpt4 book ai didi

android - 旋转后未检查 SwitchButton(在自定义 View 中)值

转载 作者:行者123 更新时间:2023-12-05 00:04:30 26 4
gpt4 key购买 nike

我需要创建自定义 View - TextViewSwitch 按钮。

我有自定义 View :

public class CustomTextWithSwitch extends LinearLayout implements View.OnClickListener {

private CustomTextWithSwitchBinding binding;
private boolean defaultValue;

public CustomTextWithSwitch(Context context) {
this(context, null);
}

public CustomTextWithSwitch(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomTextWithSwitch(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
binding = CustomTextWithSwitchBinding.inflate(LayoutInflater.from(getContext()), this);
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextWithSwitch);
defaultValue = a.getBoolean(R.styleable.CustomTextWithSwitch_defaultValue, false);
a.recycle();
}

@Override
protected void onFinishInflate() {
...
binding.sToggle.setChecked(defaultValue);
super.setOnClickListener(this);

super.onFinishInflate();
}

public void toggle() {
binding.sToggle.toggle();
defaultValue = binding.sToggle.isChecked();
}

@Override
public void onClick(View view) {
toggle();
}

public void setDefaultValue(boolean defaultValue) {
this.defaultValue = defaultValue;
binding.sToggle.setChecked(defaultValue);
}
}

我在 Activity 中使用它:

public class MyActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
myCustomView.setDefaultValue(true);
}
}

当我打开这个 Activity 时,一切都按预期工作 - 切换按钮被选中。但是,当我旋转屏幕时,它被选中为 false。有人可以建议我做错了什么吗?注意:我使用 ViewModel 并且值被正确恢复。但是,此自定义 View 中的 Switch 按钮未切换。

更新:只有当我的 Activity 中有另一个 CustomTextWithSwich 时才会出现这个问题,所以这意味着它们相互影响(似乎默认值是根据到第二个 View)。是否可以将它们分开,使它们独立?

最佳答案

我建议你使用 ViewModdel .在轮换期间,您会失去状态是正常的。 ViewModel 不会在应用程序旋转期间被销毁,因此 CustomTextWithSwich 的最后状态不会丢失。

另一方面,您可以覆盖 onConfigurationChanged 方法,每次旋转应用程序时,此方法都会运行,因此您可以使用它来设置数据。

    @Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

关于android - 旋转后未检查 SwitchButton(在自定义 View 中)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63113083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com