我创建了一个 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);
回调在 View 首次打开时被调用(回调中的断点被命中),但没有日志打印,并且回调再也不会被调用,即使我打开和关闭开关也是如此。我怎样才能让这个回调起作用?
我还尝试创建一个内联匿名监听器。我还尝试使用一个简单的 Button
和一个 onClick
监听器,但这也没有用。
最佳答案
我可以看到您正在尝试使用 PreferenceFragment与任何其他正常 fragment 一样。然而,你必须考虑正确的机制,一个例子是你不能使用所有的小部件来为用户制作一个偏好 View ,你必须使用 Preference对象(请参阅首选项子类)。
另一个例子是您必须使用 addPreferencesFromResource(int)
从 XML 资源中扩充首选项。
检查上面的链接和这个 example .
希望对你有帮助
关于android - 按钮监听器在首选项 fragment 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072559/