android - 按钮监听器在首选项 fragment 中不起作用

标签 android

我创建了一个 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/

相关文章:

Android:无法打开数据库文件

android - 需要在抽屉导航中包含标签

java - 向 Android 应用程序添加通话按钮

android - 使用 adt r17 转换为 dalvik 格式失败,出现错误 1

android - 有没有办法找到在 Android 中打开特定文件的默认应用程序?

Android平台游戏关卡编辑器

android - 帮助 Android 应用程序开发的开源项目列表

android - 为更新的 bool 值添加流程

java - Android RecyclerView 内容在 notificationItemInserted 后未更新

java - Room 使用数据库中自己的对象(实体中的子实体)