屏幕旋转后立即调用Android Checkbox侦听器方法

Jua*_*lle 5 checkbox android screen rotation

我开始编写Android应用程序,我遇到了一个复选框的问题.

我的活动中有一个复选框,我在OnCheckedChanged方法中输入一条日志消息,当复选框被选中时,它会被启动,但是当我旋转屏幕时,消息再次出现,好像OnCheckedChanged方法在系统销毁时自动调用并再次创建活动.

怎么了??谢谢.

Jon*_*ona 10

我多次使用的最好和最干净的解决方案是检查View.isPressed().这是有道理的,因为用户在触发回调时将按下Switch.

private Switch.OnCheckedChangeListener mOnSwitch = new Switch.OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (!buttonView.isPressed())
        {
            // Not from user!
            return;
        }

        // Handle user check change
    }
};
Run Code Online (Sandbox Code Playgroud)


小智 7

我曾经遇到过这样的问题.最后我删除了OnCheckedChangedListener并用onClickListener替换它.在onclick方法中我使用c.IsChecked().

我的猜测是,只要用户通过代码(通过c.setchecked(boolean))更改了复选框状态,android就会调用onCheckChange,

在你的情况下,c .setchecked(boolean)方法由android内部调用以恢复UI状态.

希望它会有所帮助.


Mr_*_*Hmp -4

尝试在应用程序标记的清单文件中添加以下行:

<activity android:name="MainActivity" android:configChanges="keyboardHidden|orientation">
Run Code Online (Sandbox Code Playgroud)

请阅读此内容,这将解决您的问题。