为了账号安全,请及时绑定邮箱和手机立即绑定

从 Android 中的 CheckBox 获取值

从 Android 中的 CheckBox 获取值

BIG阳 2022-01-19 13:05:37
我想获取我的 Fragment 中的复选框的布尔值,并在 MainActivity 中获取该值。Fragment 与 Activity 相关。分段:@Override    public void onCreate (@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        addPreferencesFromResource(R.xml.preferences);    }}活动@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getFragmentManager().beginTransaction().replace(android.R.id.content,                new MyPreferenceFragment()).commit();有人可以向我解释一下我是如何做到的。我刚刚尝试了一个接口,但我总是得到一个空错误,比如复选框未初始化
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这是您绑定和获取复选框值的方式:


Checkbox cb = (CheckBox)findViewById(R.id.yourCheckBox);

boolean checkboxState = cb.isChecked();

现在为了通过回调将该信息传递给您的活动,您可以执行以下操作:


在您的片段中创建一个界面:


public interface MyInterface {

    public void onMyInterface(boolean b);

}

在 onAttach() 方法中包括以下内容:


MyInterface myInterface;


@Override

public void onAttach(Context context) {

    super.onAttach(context);

    myInterface = (MyInterface) context;

}

当您需要将数据发送到活动时,在您的片段中添加以下内容:


sendBooleanCheckBox(checkBoxState);

在哪里:


public void sendBooleanCheckBox(boolean b) {

    myInterface.onMyInterface(b);

}

在您的活动中:


@Override

public void onMyInterface(boolean b) {

    Log.d("TAG","check box value is: " + b);

}

确保您的活动实现了接口:


public MyActivity implements OnMyInterface {...


查看完整回答
反对 回复 2022-01-19
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我相信您正在使用PreferenceFragmentCompat。在文档中,我看到可以使用 findPreference(key) findPreference(java.lang.CharSequence)方法找到Preference 。findPreference 返回一个可以为您提供值的 Preference 对象。


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 611 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信