Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fatal Exception: java.lang.RuntimeException: Unable to instantiate fragment mb.h: could not find Fragment constructor #1012

Closed
marmayy opened this issue May 30, 2022 · 3 comments

Comments

@marmayy
Copy link

marmayy commented May 30, 2022

πŸ› Describe the bug

I'm having a crash in some users (~0.1% of them) when they open an AppIntro2 activity. See the device list because I think it is very suspicious.

⚠️ Current behavior

Activity crashing sometimes

βœ… Expected behavior

Activity created well

πŸ’£ Steps to reproduce

Couldn't reproduce it

πŸ“‘ Your Code

build.gradle
implementation 'com.github.AppIntro:AppIntro:6.2.0'

Exception stacktrace


**Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{packagexxx.activities.IntroActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment mb.h: could not find Fragment constructor**
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3298)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3437)
       at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5307)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5215)
       at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2041)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7386)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
**Caused by androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment mb.h: could not find Fragment constructor**
       at androidx.fragment.app.Fragment.instantiate(Fragment.java:630)
       at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
       at androidx.fragment.app.FragmentManager$2.instantiate(FragmentManager.java:448)
       at androidx.fragment.app.FragmentState.instantiate(FragmentState.java:81)
       at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:85)
       at androidx.fragment.app.FragmentManager.restoreSaveStateInternal(FragmentManager.java:2410)
       at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2584)
       at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:116)
       at androidx.fragment.app.FragmentActivity.lambda$init$1(FragmentActivity.java:128)
       at androidx.fragment.app.FragmentActivity.$r8$lambda$QtiQ2ZI3e38UkO1_xuJ8vE_JZj4(FragmentActivity.java)
       at androidx.fragment.app.FragmentActivity$$InternalSyntheticLambda$0$cef12c4fb802c6ea87b1fbddce076644080634cb6e3f7fb823e201a9f4f7f1ec$1.onContextAvailable(FragmentActivity.java:2)
       at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.java:99)
       at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:322)
       at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:249)
       **at com.github.appintro.AppIntroBase.onCreate(AppIntroBase.kt:395)
       at com.github.appintro.AppIntro2.onCreate(AppIntro2.kt:40)
       at packagexxx.activities.IntroActivity.onCreate(IntroActivity.java:21)**
       at android.app.Activity.performCreate(Activity.java:7802)
       at android.app.Activity.performCreate(Activity.java:7791)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3273)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3437)
       at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5307)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5215)
       at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2041)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7386)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
**Caused by java.lang.NoSuchMethodException: mb.h.<init> []**
       at java.lang.Class.getConstructor0(Class.java:2332)
       at java.lang.Class.getConstructor(Class.java:1728)
       at androidx.fragment.app.Fragment.instantiate(Fragment.java:615)
       at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
       at androidx.fragment.app.FragmentManager$2.instantiate(FragmentManager.java:448)
       at androidx.fragment.app.FragmentState.instantiate(FragmentState.java:81)
       at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:85)
       at androidx.fragment.app.FragmentManager.restoreSaveStateInternal(FragmentManager.java:2410)
       at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2584)
       at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:116)
       at androidx.fragment.app.FragmentActivity.lambda$init$1(FragmentActivity.java:128)
       at androidx.fragment.app.FragmentActivity.$r8$lambda$QtiQ2ZI3e38UkO1_xuJ8vE_JZj4(FragmentActivity.java)
       at androidx.fragment.app.FragmentActivity$$InternalSyntheticLambda$0$cef12c4fb802c6ea87b1fbddce076644080634cb6e3f7fb823e201a9f4f7f1ec$1.onContextAvailable(FragmentActivity.java:2)
       at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.java:99)
       at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:322)
       at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:249)
       **at com.github.appintro.AppIntroBase.onCreate(AppIntroBase.kt:395)
       at com.github.appintro.AppIntro2.onCreate(AppIntro2.kt:40)
       at packagexxx.activities.IntroActivity.onCreate(IntroActivity.java:21)**
       at android.app.Activity.performCreate(Activity.java:7802)
       at android.app.Activity.performCreate(Activity.java:7791)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3273)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3437)
       at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5307)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5215)
       at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2041)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7386)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

Java code

        Intent intent = new Intent(this, IntroActivity.class);
        startActivityForResult(intent, TUTORIALEND);

...
...

public class IntroActivity extends AppIntro2 {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Note here that we DO NOT use setContentView();

        setImmersiveMode();

        Fragment fragment1 = Intro.newInstance();
        Fragment fragment2 = Intro2.newInstance();

        addSlide(fragment1);
        addSlide(fragment2);

        setSkipButtonEnabled(true);

        setColorTransitionsEnabled(true);

        setVibrate(true);
        setVibrateDuration(70);

    }
...

πŸ“± Tech info

  • AppIntro Version: 6.2.0
  • Device: Nokia 2.4, Redmi 9A, Redmi 9C, ZenFone Max Shot (ZB634KL), Redmi 7A, HOT 7, C5 2019, HOT 6 Pro, TCL A3, T6, Redmi Note 8 Pro
  • Android OS Version: 8,9,10,11
@cortinico
Copy link
Member

Not sure frankly what can be done on those type of crashes? Have you tried searching on the Google's Issue Tracker or for other libraries if they're having the same behavior?

@marmayy
Copy link
Author

marmayy commented May 31, 2022

I've seen some sources that say that this could be a proguard issue:

Ex:
shadowsocks/shadowsocks-android#2332

@paolorotolo
Copy link
Member

I'm closing this since fragment handling has changed in AppIntro 7.0.0 (Beta) which is now based on ViewPager2. Please feel free to reopen the issue if it still occurs. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants