java - 多个开关的问题,NullPointerException

标签 java android

我遇到了导致空指针异常的问题。

问题是由于我的 OnCheckedChanged() 方法的结构方式造成的。目前,不同的对话框 View 是根据创建时传递的字符串来扩展的。基于此 View ,向用户呈现不同的开关。

我正在寻找一种方法来重新配置以下代码,以便它能够运行所有“if 语句”并崩溃。我希望它做一些类似于 switch(v.getId()) + switch 结构的事情。

我试图避免为我的应用程序实现单独的 OnCheckedChange 监听器。

有人知道我如何重组它以避免 NullPointerException 吗?

    @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    // TODO Auto-generated method stub
    if (alertDelete.isChecked()) {
        // The toggle is enabled
        permSet.add("alert_delete");
        Log.e("ALERTDELETE", "CHECKED");
    } else {
        // The toggle is disabled
        permSet.remove("alert_delete");
        Log.e("ALERTDELETE", "UNCHECKED");
    }
    if (autoCreate.isChecked()) {
        // The toggle is enabled
        permSet.add("auto_create");
        Log.e("ALERTDELETE", "CHECKED");
    } else {
        // The toggle is disabled
        permSet.remove("auto_create");
        Log.e("ALERTDELETE", "UNCHECKED");
    }
    if (autoDelete.isChecked()) {
        // The toggle is enabled
        permSet.add("auto_delete");
        Log.e("ALERTDELETE", "CHECKED");
    } else {
        // The toggle is disabled
        permSet.remove("auto_delete");
        Log.e("ALERTDELETE", "UNCHECKED");
    }
    if (autoEdit.isChecked()) {
        // The toggle is enabled
        permSet.add("auto_edit");
        Log.e("ALERTDELETE", "CHECKED");
    } else {
        // The toggle is disabled
        permSet.remove("auto_edit");
        Log.e("ALERTDELETE", "UNCHECKED");
    }

}

最佳答案

您还可以有一个简单的方法来避免重复

private void checkAndSet(Checkable checkable, String param) {

if (checkable.isChecked()) {
            // The toggle is enabled
            permSet.add(param);
            Log.e("ALERTDELETE", "CHECKED");
        } else {
            // The toggle is disabled
            permSet.remove(param);
            Log.e("ALERTDELETE", "UNCHECKED");
        }

}

在每种情况下您都可以调用:

checkAndSet(autoDelete, "auto_delete"); 

关于java - 多个开关的问题,NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676007/

相关文章:

java - jdbc 结果集关闭

android - 形状和选择器不起作用

android - Adapter 中的多个 SeekBar,仅最后一次 SeekBar 更新

java - 前端实例小时数 - 如何减少使用量?

java - Netbeans 崩溃

java - 如何将 BufferedImage 转换为 Mat (OpenCV)

java - Apache Shiro - ClassNotFoundException

java - 未定义类型按钮的错误 setonclickListener

android - 每次更改设备方向时,项目都会添加到 Recycler View 中

java - 如何解决 "This element has no attached source and the Javadoc could not be found in the attached Javadoc"?