{"record":{"id":"85b4f339895b10ff","repo":"hackware1993/MagicIndicator","slug":"x-badge-rule-is-wrong","errorCode":null,"errorMessage":"x badge rule is wrong.","messagePattern":"x badge rule is wrong\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"magicindicator/src/main/java/net/lucode/hackware/magicindicator/buildins/commonnavigator/titles/badge/BadgePagerTitleView.java","lineNumber":188,"sourceCode":"        }\n        return getBottom();\n    }\n\n    public BadgeRule getXBadgeRule() {\n        return mXBadgeRule;\n    }\n\n    public void setXBadgeRule(BadgeRule badgeRule) {\n        if (badgeRule != null) {\n            BadgeAnchor anchor = badgeRule.getAnchor();\n            if (anchor != BadgeAnchor.LEFT\n                    && anchor != BadgeAnchor.RIGHT\n                    && anchor != BadgeAnchor.CONTENT_LEFT\n                    && anchor != BadgeAnchor.CONTENT_RIGHT\n                    && anchor != BadgeAnchor.CENTER_X\n                    && anchor != BadgeAnchor.LEFT_EDGE_CENTER_X\n                    && anchor != BadgeAnchor.RIGHT_EDGE_CENTER_X) {\n                throw new IllegalArgumentException(\"x badge rule is wrong.\");\n            }\n        }\n        mXBadgeRule = badgeRule;\n    }\n\n    public BadgeRule getYBadgeRule() {\n        return mYBadgeRule;\n    }\n\n    public void setYBadgeRule(BadgeRule badgeRule) {\n        if (badgeRule != null) {\n            BadgeAnchor anchor = badgeRule.getAnchor();\n            if (anchor != BadgeAnchor.TOP\n                    && anchor != BadgeAnchor.BOTTOM\n                    && anchor != BadgeAnchor.CONTENT_TOP\n                    && anchor != BadgeAnchor.CONTENT_BOTTOM\n                    && anchor != BadgeAnchor.CENTER_Y\n                    && anchor != BadgeAnchor.TOP_EDGE_CENTER_Y","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/hackware1993/MagicIndicator/blob/fe22c7dc45444312bf1e8c71d1ced8e7c1aa3c9c/magicindicator/src/main/java/net/lucode/hackware/magicindicator/buildins/commonnavigator/titles/badge/BadgePagerTitleView.java#L170-L206","documentation":"BadgePagerTitleView.setXBadgeRule() validates that the BadgeRule's anchor is one of the X-axis anchors (LEFT, RIGHT, CONTENT_LEFT, CONTENT_RIGHT, CENTER_X, LEFT_EDGE_CENTER_X, RIGHT_EDGE_CENTER_Y-family X anchors). Passing a rule whose anchor is a Y-axis anchor (TOP, BOTTOM, CENTER_Y, etc.) throws IllegalArgumentException. The library enforces axis correctness at set time.","triggerScenarios":"Calling setXBadgeRule(new BadgeRule(BadgeAnchor.TOP, offset)) or any BadgeRule whose anchor is BadgeAnchor.BOTTOM, CONTENT_TOP, CONTENT_BOTTOM, CENTER_Y, TOP_EDGE_CENTER_Y, or BOTTOM_EDGE_CENTER_Y.","commonSituations":"Swapping the arguments when configuring a badge (using the Y anchor in setXBadgeRule), refactoring shared BadgeRule-building code between x and y setters, or copy-pasting a y rule into the x setter.","solutions":["Use an X-axis anchor in the BadgeRule passed to setXBadgeRule: LEFT, RIGHT, CONTENT_LEFT, CONTENT_RIGHT, CENTER_X, LEFT_EDGE_CENTER_X, or RIGHT_EDGE_CENTER_X","Move Y-axis anchors (TOP, BOTTOM, CONTENT_TOP, CONTENT_BOTTOM, CENTER_Y, TOP_EDGE_CENTER_Y, BOTTOM_EDGE_CENTER_Y) to setYBadgeRule instead","If the rule is built dynamically, validate badgeRule.getAnchor() against the X anchors before calling setXBadgeRule"],"exampleFix":"// before\nbadgePagerTitleView.setXBadgeRule(new BadgeRule(BadgeAnchor.CENTER_Y, 0));\n\n// after\nbadgePagerTitleView.setXBadgeRule(new BadgeRule(BadgeAnchor.CENTER_X, 0));","handlingStrategy":"validation","validationCode":"static boolean isValidXAnchor(@BadgeAnchor int anchor) {\n    return anchor == BadgeAnchor.LEFT\n        || anchor == BadgeAnchor.RIGHT\n        || anchor == BadgeAnchor.CONTENT_LEFT\n        || anchor == BadgeAnchor.CONTENT_RIGHT\n        || anchor == BadgeAnchor.CENTER_X\n        || anchor == BadgeAnchor.LEFT_EDGE_CENTER_X\n        || anchor == BadgeAnchor.RIGHT_EDGE_CENTER_X;\n}\n\n// before calling:\nif (isValidXAnchor(rule.getAnchor())) view.setXBadgeRule(rule);","typeGuard":"static boolean isXBadgeRule(BadgeRule rule) {\n    return rule != null && isValidXAnchor(rule.getAnchor());\n}","tryCatchPattern":"try {\n    badgePagerTitleView.setXBadgeRule(rule);\n} catch (IllegalArgumentException e) {\n    Log.w(\"MagicIndicator\", \"Bad x badge rule anchor: \" + rule.getAnchor(), e);\n}","preventionTips":["Keep x and y BadgeRule construction in separate clearly-named helper methods","Use the BadgeAnchor constants, never raw ints, so the IDE flags wrong-axis usage","If building rules dynamically, check the anchor axis at build time"],"tags":["android","illegal-argument","badge-anchor"],"backgroundTag":"invalid-enum-value","analyzedSha":"fe22c7dc45444312bf1e8c71d1ced8e7c1aa3c9c","analyzedAt":"2026-09-10T10:42:42.784Z","contentChangedAt":"2026-09-10T10:42:42.784Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}