【问题标题】:Fragment setAnimation null pointer onBackPressed片段 setAnimation 空指针 onBackPressed
【发布时间】:2022-07-06 11:17:39
【问题描述】:

我收到了这个崩溃堆栈跟踪,但不知道是什么原因造成的

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'void androidx.fragment.app.Fragment.setAnimations(int, int, int, int)' on a null object reference
androidx.fragment.app.BackStackRecord.executePopOps (BackStackRecord.java:491)
androidx.activity.ComponentActivity.onBackPressed (ComponentActivity.java:543)
com.app.myapp.activities.MainNavActivity.onBackPressed (MainNavActivity.java:370)

这就是我在 onBackPressed 上所做的,你可以看到我什至没有调用 setAnimation。

@Override
    public void onBackPressed() {

        int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
        if (backStackEntryCount > 0) {

            // trigger on back pressed in fragment
            Fragment currentFragNav = getSupportFragmentManager().findFragmentById(R.id.activity_main_root);
            if (currentFragNav instanceof IFragmentNav) {
                boolean isComplete = ((IFragmentNav) currentFragNav).onExit();
                if (isComplete) return;
            }

            Fragment prevFragNav;

            if (backStackEntryCount == 1) {
                prevFragNav = pagerAdapter.getCreatedFragmentByPos(mPager.getCurrentItem());
            } else {
                // get previous fragment
                String fragmentTag = getSupportFragmentManager().getBackStackEntryAt(backStackEntryCount - 2).getName();
                prevFragNav = getSupportFragmentManager().findFragmentByTag(fragmentTag);
            }

            if (prevFragNav instanceof IFragmentNav) {
                ((IFragmentNav) prevFragNav).onEntry();
            }

            super.onBackPressed();


            return;
        }

        if (mPager.getCurrentItem() != MainNavPagerAdapter.PAGE_HOME) {
            updateMenuSelection(R.id.menu_main_home);
            return;
        }


        if (doubleBackToExitPressedOnce) {
            finish();
            return;
        }

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, getString(R.string.double_back_to_exit), Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);

    }

它只发生在 android OS 9+ 上,所以我试图检查是否有任何我必须处理的默认动画,但到目前为止我找不到任何东西

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    我遇到了同样的问题,你解决了吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 2013-10-18
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多