{"record":{"id":"353eb34099e53f25","repo":"didi/DoKit","slug":"fit-cannot-be-used-with-resize","errorCode":null,"errorMessage":"Fit cannot be used with resize.","messagePattern":"Fit cannot be used with resize\\.","errorType":"validation","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"Android/dokit/src/main/java/com/didichuxing/doraemonkit/picasso/RequestCreator.java","lineNumber":650,"sourceCode":"    public void into(ImageView target, Callback callback) {\n        long started = System.nanoTime();\n        checkMain();\n\n        if (target == null) {\n            throw new IllegalArgumentException(\"Target must not be null.\");\n        }\n\n        if (!data.hasImage()) {\n            picasso.cancelRequest(target);\n            if (setPlaceholder) {\n                setPlaceholder(target, getPlaceholderDrawable());\n            }\n            return;\n        }\n\n        if (deferred) {\n            if (data.hasSize()) {\n                throw new IllegalStateException(\"Fit cannot be used with resize.\");\n            }\n            int width = target.getWidth();\n            int height = target.getHeight();\n            if (width == 0 || height == 0) {\n                if (setPlaceholder) {\n                    setPlaceholder(target, getPlaceholderDrawable());\n                }\n                picasso.defer(target, new DeferredRequestCreator(this, target, callback));\n                return;\n            }\n            data.resize(width, height);\n        }\n\n        Request request = createRequest(started);\n        String requestKey = createKey(request);\n\n        if (shouldReadFromMemoryCache(memoryPolicy)) {\n            Bitmap bitmap = picasso.quickMemoryCacheCheck(requestKey);","sourceCodeStart":632,"sourceCodeEnd":668,"githubUrl":"https://github.com/didi/DoKit/blob/626827cddb2feb2f3aee87a52a064b4e5ca2bed4/Android/dokit/src/main/java/com/didichuxing/doraemonkit/picasso/RequestCreator.java#L632-L668","documentation":"Thrown by RequestCreator.into(ImageView, Callback) when the request uses both fit() and resize(). fit() means 'defer sizing until the target ImageView is laid out' (deferred=true); resize() means 'use these exact dimensions' (data.hasSize()). The two are mutually exclusive sizing strategies, and the library throws IllegalStateException during the deferred branch of into() rather than guessing which one wins.","triggerScenarios":"Chaining .fit().resize(w, h) (or .resize(...) then .fit()) on the same RequestCreator and calling into(imageView); often happens when a shared builder sets resize and call-site code adds fit(), or vice versa.","commonSituations":"A defaults layer (request transformer or shared factory) applying resize for memory efficiency while a screen adds fit() for exact container matching; copy-pasting load code and appending fit() to a line that already resizes.","solutions":["Pick one sizing strategy: remove resize() if you want fit()'s layout-measured size, or remove fit() if the fixed size is correct.","Prefer fit() when the ImageView size varies by device/screen; prefer resize() (+ centerInside/onlyScaleDown) when you know target dimensions.","Audit shared request-builder helpers so they do not silently add resize to requests that call sites extend with fit()."],"exampleFix":"// before\npicasso.load(url).fit().resize(200, 200).into(imageView);\n\n// after\npicasso.load(url).fit().into(imageView);\n// or fixed size:\npicasso.load(url).resize(200, 200).centerInside().into(imageView);","handlingStrategy":"validation","validationCode":"// Centralize sizing policy\nRequestCreator withSizing(Picasso p, String url, boolean fitToView) {\n    RequestCreator rc = p.load(url);\n    if (fitToView) {\n        return rc.fit();\n    }\n    return rc.resize(DEFAULT_W, DEFAULT_H).centerInside();\n}","typeGuard":null,"tryCatchPattern":"Not applicable — IllegalStateException signals deterministic builder conflict; correct the chain.","preventionTips":["fit() and resize() are mutually exclusive; enforce one per request in code review.","Shared builder factories must not mix sizing strategies across layers.","Prefer fit() for unknown container sizes, resize() for fixed cells."],"tags":["android","picasso","sizing","api-misuse","imageview"],"backgroundTag":null,"analyzedSha":"626827cddb2feb2f3aee87a52a064b4e5ca2bed4","analyzedAt":"2026-08-14T12:45:58.758Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}