{"record":{"id":"66467275a5cf9999","repo":"YoKeyword/Fragmentation","slug":"must-extends-fragmentactivity-appcompatactivity-an","errorCode":null,"errorMessage":"Must extends FragmentActivity/AppCompatActivity and implements ISupportActivity","messagePattern":"Must extends FragmentActivity/AppCompatActivity and implements ISupportActivity","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"critical","filePath":"fragmentation_swipeback/src/main/java/me/yokeyword/fragmentation_swipeback/core/SwipeBackActivityDelegate.java","lineNumber":22,"sourceCode":"import android.graphics.drawable.ColorDrawable;\nimport android.os.Bundle;\nimport androidx.fragment.app.FragmentActivity;\nimport android.view.ViewGroup;\n\nimport me.yokeyword.fragmentation.ISupportActivity;\nimport me.yokeyword.fragmentation.SwipeBackLayout;\n\n/**\n * Created by YoKey on 17/6/29.\n */\n\npublic class SwipeBackActivityDelegate {\n    private FragmentActivity mActivity;\n    private SwipeBackLayout mSwipeBackLayout;\n\n    public SwipeBackActivityDelegate(ISwipeBackActivity swipeBackActivity) {\n        if (!(swipeBackActivity instanceof FragmentActivity) || !(swipeBackActivity instanceof ISupportActivity))\n            throw new RuntimeException(\"Must extends FragmentActivity/AppCompatActivity and implements ISupportActivity\");\n        mActivity = (FragmentActivity) swipeBackActivity;\n    }\n\n    public void onCreate(Bundle savedInstanceState) {\n        onActivityCreate();\n    }\n\n    public void onPostCreate(Bundle savedInstanceState) {\n        mSwipeBackLayout.attachToActivity(mActivity);\n    }\n\n    public SwipeBackLayout getSwipeBackLayout() {\n        return mSwipeBackLayout;\n    }\n\n    public void setSwipeBackEnable(boolean enable) {\n        mSwipeBackLayout.setEnableGesture(enable);\n    }","sourceCodeStart":4,"sourceCodeEnd":40,"githubUrl":"https://github.com/YoKeyword/Fragmentation/blob/0394930a3e2368f210df31f2632fb89b9c44e121/fragmentation_swipeback/src/main/java/me/yokeyword/fragmentation_swipeback/core/SwipeBackActivityDelegate.java#L4-L40","documentation":"SwipeBackActivityDelegate requires its host to be both a FragmentActivity (for fragment operations) and an ISupportActivity (for fragmentation integration). The constructor throws a RuntimeException if either condition fails, since it casts to FragmentActivity and delegates to the support stack.","triggerScenarios":"Instantiating SwipeBackActivityDelegate (or extending SwipeBackActivity using it) from an activity that is not a FragmentActivity or does not implement ISupportActivity.","commonSituations":"Adding swipe-back to a plain Activity or AppCompatActivity without ISupportActivity; custom base activities missing the ISupportActivity implementation; mixing fragmentation_swipeback with non-support activities.","solutions":["Extend SwipeBackActivity from the library, which already satisfies both constraints.","Or extend AppCompatActivity/FragmentActivity AND implement ISupportActivity (with SupportActivityDelegate) before using SwipeBackActivityDelegate."],"exampleFix":"// before\npublic class DetailActivity extends Activity {\n// after\npublic class DetailActivity extends SwipeBackActivity {","handlingStrategy":"validation","validationCode":"if (!(this instanceof FragmentActivity) || !(this instanceof ISupportActivity)) {\n    throw new IllegalStateException(\"SwipeBack host must extend FragmentActivity and implement ISupportActivity\");\n}","typeGuard":"boolean isSwipeBackHost(Activity a) { return a instanceof FragmentActivity && a instanceof ISupportActivity; }","tryCatchPattern":null,"preventionTips":["Prefer extending SwipeBackActivity directly.","When building custom bases, always pair SwipeBackActivityDelegate with ISupportActivity implementation.","Verify both constraints before wiring swipe-back into an activity."],"tags":["android","swipeback","activity","wrong-base-class"],"backgroundTag":"invalid-constructor-argument","analyzedSha":"0394930a3e2368f210df31f2632fb89b9c44e121","analyzedAt":"2026-09-10T13:16:30.469Z","contentChangedAt":"2026-09-10T13:16:30.469Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}