{"record":{"id":"d67f13bb9b4b0654","repo":"material-components/material-components-android","slug":"invalid-sheet-edge-position-value-d-must-be-d","errorCode":null,"errorMessage":"Invalid sheet edge position value: %d. Must be %d or %d.","messagePattern":"Invalid sheet edge position value: (.+?)\\. Must be (.+?) or (.+?)\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"lib/java/com/google/android/material/sidesheet/SideSheetBehavior.java","lineNumber":198,"sourceCode":"        if (shapeAppearanceModel != null && !hasRightMargin()) {\n          ShapeAppearanceModel.Builder builder = shapeAppearanceModel.toBuilder();\n          builder.setTopRightCornerSize(0).setBottomRightCornerSize(0);\n          updateMaterialShapeDrawable(builder.build());\n        }\n        return;\n      }\n\n      if (sheetEdge == EDGE_LEFT) {\n        this.sheetDelegate = new LeftSheetDelegate(this);\n        if (shapeAppearanceModel != null && !hasLeftMargin()) {\n          ShapeAppearanceModel.Builder builder = shapeAppearanceModel.toBuilder();\n          builder.setTopLeftCornerSize(0).setBottomLeftCornerSize(0);\n          updateMaterialShapeDrawable(builder.build());\n        }\n        return;\n      }\n\n      throw new IllegalArgumentException(\n          \"Invalid sheet edge position value: \"\n              + sheetEdge\n              + \". Must be \"\n              + EDGE_RIGHT\n              + \" or \"\n              + EDGE_LEFT\n              + \".\");\n    }\n  }\n\n  @GravityInt\n  private int getGravityFromSheetEdge() {\n    if (sheetDelegate != null) {\n      return sheetDelegate.getSheetEdge() == Sheet.EDGE_RIGHT ? Gravity.RIGHT : Gravity.LEFT;\n    }\n    return Gravity.RIGHT;\n  }\n","sourceCodeStart":180,"sourceCodeEnd":216,"githubUrl":"https://github.com/material-components/material-components-android/blob/ac7e18efeefb331850c561faf9ab8bf81d27ba68/lib/java/com/google/android/material/sidesheet/SideSheetBehavior.java#L180-L216","documentation":"SideSheetBehavior's sheet-edge setter throws IllegalArgumentException for any value other than EDGE_LEFT or EDGE_RIGHT. The edge determines which SheetDelegate (left/right) owns layout and drag math, so an unknown gravity int has no delegate and is rejected during validation.","triggerScenarios":"Calling setSheetEdge(...) with a raw gravity like Gravity.BOTTOM, Gravity.TOP, or an undefined int, or reading an edge constant from a bundle/preferences that maps to an unexpected value after deserialization.","commonSituations":"Persisting the sheet edge as an int and restoring a stale/invalid value across app versions; passing GravityCompat constants that don't match; UI that lets users pick an edge and forwards an unvalidated id.","solutions":["Pass only SideSheetBehavior.EDGE_LEFT or SideSheetBehavior.EDGE_RIGHT.","Validate persisted values before use: if (edge != EDGE_LEFT && edge != EDGE_RIGHT) edge = EDGE_RIGHT;","Map UI option ids to the two constants explicitly instead of forwarding raw ints."],"exampleFix":"// before\nbehavior.setSheetEdge(prefs.getInt(\"sheet_edge\", Gravity.BOTTOM)); // invalid\n\n// after\nint saved = prefs.getInt(\"sheet_edge\", SideSheetBehavior.EDGE_RIGHT);\nbehavior.setSheetEdge(\n    saved == SideSheetBehavior.EDGE_LEFT ? SideSheetBehavior.EDGE_LEFT\n                                         : SideSheetBehavior.EDGE_RIGHT);","handlingStrategy":"validation","validationCode":"static boolean isValidSheetEdge(int edge) {\n  return edge == SideSheetBehavior.EDGE_LEFT || edge == SideSheetBehavior.EDGE_RIGHT;\n}\n// usage\nif (isValidSheetEdge(edge)) behavior.setSheetEdge(edge);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never forward persisted or user-supplied ints straight into setSheetEdge.","Store the edge as a boolean/enum and map to the two constants at the call site."],"tags":["android","material-components","sidesheet","validation"],"backgroundTag":null,"analyzedSha":"ac7e18efeefb331850c561faf9ab8bf81d27ba68","analyzedAt":"2026-08-14T15:35:35.735Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}