gpt4 book ai didi

java - 关于android源码中Swithpreference.java中的onBindview()方法

转载 作者:行者123 更新时间:2023-12-01 19:07:46 24 4
gpt4 key购买 nike

protected void onBindView(View view) {
super.onBindView(view);

View checkableView = view.findViewById(com.android.internal.R.id.switch_widget);
if (checkableView != null && checkableView instanceof Checkable) {
if (checkableView instanceof Switch) {
final Switch switchView = (Switch) checkableView;
switchView.setOnCheckedChangeListener(null);

}

((Checkable) checkableView).setChecked(mChecked);

if (checkableView instanceof Switch) {
final Switch switchView = (Switch) checkableView;
switchView.setTextOn(mSwitchOn);
switchView.setTextOff(mSwitchOff);
switchView.setOnCheckedChangeListener(mListener);
}
}

syncSummaryView(view);
}

我有一个疑问,为什么这里先判断switch_widget和setOnCheckedChangeListener(null); R.id.switch_widget是不是被很多SwitchPreference使用了,所以我们需要清除它,对吗?但是之前的SwithchPreference不需要设置monitor?

最佳答案

My qustion is that why must switchView.setOnCheckedChangeListener(null) firstly?Thanks!

您必须查看文件的历史记录,看看是否有注释阐明了代码为何如此设置。但是,一般来说,如果您不想使用后面的代码调用它,您将清除监听器。

由于此代码只想设置 View 的初始状态,因此它不想调用通常在状态发生变化时调用的监听器(例如响应用户单击) 。因此,为了防止这种情况,监听器会被保存、清除,然后在更新检查状态后恢复。

希望有帮助!

关于java - 关于android源码中Swithpreference.java中的onBindview()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59517875/

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