android – 按钮监听器无法在Preference片段中工作

我已经创建了一个PreferenceFragment子类,它实现了CompoundButton.OnCheckedChangeListener.我有一个首选项,包含一个Switch(CompoundButton的子类).这是我为交换机的值更改时创建的回调:
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
    mAppController.doSomething(isChecked);
    Log.v("rose_tag","hi");
}

我在OnCreate中声明了首选项如下:

Switch mySwitch = (Switch) myView.findViewById(R.id.switch);
mySwitch.setEnabled(true);
mySwitch.setOnCheckedChangeListener(this);

当视图首次打开时(回调中的断点被点击)调用回调,但没有日志打印,并且即使我打开和关闭开关,也不会再次调用回调.如何使这个回调工作?

我还尝试创建一个内联匿名监听器.我也尝试使用带有onClick侦听器的简单Button,但这也无效.

解决方法

我可以看到你正在尝试使用 PreferenceFragment作为任何其他正常片段.但是,您必须接受计数正确的机制,例如,您不能使用所有小部件为用户创建首选项视图,您必须使用 Preference对象(请参阅首选项子类).

另一个例子是您必须使用addPreferencesFromResource(int)来扩充XML资源的首选项.

检查上面的两个链接和这个example.

我希望它能帮助你.

相关文章

ADB Remote ATV Android TV 的遥控器,基于 ADB Shell 命令 ...
使用Flutter自带的SearchDelegate组件实现搜索界面,通过魔改...
上篇文章讲解了怎么使用Kotlin的协程配合Retrofit发起网络请...
安卓开发——WebView+Recyclerview文章详情页,解决高度...
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...