我已经创建了一个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资源的首选项.
我希望它能帮助你.