gpt4 book ai didi

android - 如何清除广播组并同时使用 oncheckchanged 监听器?

转载 作者:行者123 更新时间:2023-11-30 03:59:32 26 4
gpt4 key购买 nike

我的困境是我想用

radioGrp.clearCheck(); 

经过一些研究,我发现这样做的方法就是这样

        selectedid = radioGrp.getCheckedRadioButtonId();
if (selectedid > 0) {
radioGrp.clearCheck();
}

这是因为 getCheckid 可能会出现负数或类似的问题。但是,我如何在同一 Activity 中使用它和以下内容。 oncheckedchangedlistener 有它自己的 int id,我认为这是导致问题的原因....

radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
.....

我经常遇到这个错误

10-04 08:44:03.728: E/AndroidRuntime(420): FATAL EXCEPTION: main
10-04 08:44:03.728: E/AndroidRuntime(420): java.lang.NullPointerException
10-04 08:44:03.728: E/AndroidRuntime(420): at com.mangodeveloper.mcathomie.McatActivityGame$1.onCheckedChanged(McatActivityGame.java:93)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.widget.RadioGroup.setCheckedId(RadioGroup.java:172)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.widget.RadioGroup.check(RadioGroup.java:166)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.widget.RadioGroup.clearCheck(RadioGroup.java:205)
10-04 08:44:03.728: E/AndroidRuntime(420): at com.mangodeveloper.mcathomie.McatActivityGame.fillQuestions(McatActivityGame.java:83)
10-04 08:44:03.728: E/AndroidRuntime(420): at com.mangodeveloper.mcathomie.McatActivityGame.access$8(McatActivityGame.java:51)
10-04 08:44:03.728: E/AndroidRuntime(420): at com.mangodeveloper.mcathomie.McatActivityGame$2.onClick(McatActivityGame.java:128)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.view.View.performClick(View.java:2485)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.view.View$PerformClick.run(View.java:9080)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.os.Handler.handleCallback(Handler.java:587)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.os.Handler.dispatchMessage(Handler.java:92)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.os.Looper.loop(Looper.java:123)
10-04 08:44:03.728: E/AndroidRuntime(420): at android.app.ActivityThread.main(ActivityThread.java:3683)
10-04 08:44:03.728: E/AndroidRuntime(420): at java.lang.reflect.Method.invokeNative(Native Method)
10-04 08:44:03.728: E/AndroidRuntime(420): at java.lang.reflect.Method.invoke(Method.java:507)
10-04 08:44:03.728: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-04 08:44:03.728: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-04 08:44:03.728: E/AndroidRuntime(420): at dalvik.system.NativeStart.main(Native Method)

最佳答案

好吧,我已经找到了一个变通办法,尽管它很初级 - 我只是很尴尬,我没有早点想到它。基本上我只是在设置检查更改的监听器之前调用 clear radiogroup 命令。但是如果您的 Activity 像我一样在循环中有这些,那么您必须在清除命令再次出现之前将 setOnCheckedChangeListener 设置为 null。这是我的解决方案框架和重要部分。它应该工作正常,直到出现更好的东西。

private void Method1() {    

...

selectedid = radioGrp.getCheckedRadioButtonId();
if (selectedid > 0) {
radioGrp.clearCheck();
}
// ^ must come before the following method.
activateButtons();
}


private void activateButtons() {

radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {

...

radioGrp.setOnCheckedChangeListener(null);
}
});
Method1();
}

关于android - 如何清除广播组并同时使用 oncheckchanged 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com