【发布时间】: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+ 上,所以我试图检查是否有任何我必须处理的默认动画,但到目前为止我找不到任何东西
【问题讨论】: