- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个托 pipe fragment 的父 fragment 。我对我的应用程序进行了压力测试,通过在开发人员选项中选中“不保留 Activity ”,然后按下主页按钮来强制终止它。
可以看到父 fragment 的onSaveInstanceState
被调用了,函数的代码是:
if (mDetailFragment!=null){
getChildFragmentManager().putFragment(outState,FRAGMENT_ROUTE,mDetailFragment);
}
然后,当我恢复应用程序时,看到调用父 fragment 的 onCreate
时使用了 NON-null 和 NON-empty savedInstanceState,我可以看到包含索引 FRAGMENT_ROUTE 的包。但是,当我调用 getFragment
时,它总是崩溃。代码如下:
if (savedInstanceState == null) {
mDetailFragment = new RouteFragment();
fragmentManager.beginTransaction().replace(R.id.v4_fragment_route, mDetailFragment).commit();
} else {
//first try to find the fragment in a normal way
mDetailFragment = (RouteFragment) fragmentManager.findFragmentById(R.id.v4_fragment_route);
//if cannot, then use getFragment
if (mDetailFragment== null){
mDetailFragment = (RouteFragment) fragmentManager.getFragment(savedInstanceState,FRAGMENT_ROUTE);
}
}
崩溃日志如下,看起来索引列表是空的。我错过了什么?谢谢
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:583)
at com.myapp.android.appname.fragment.HomeFragment.onCreate(HomeFragment.java:170)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1764)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1127)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1109)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1913)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:267)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
at com.buzzhives.android.tripplanner.ProgressEnabledActivity.onCreate(ProgressEnabledActivity.java:25)
at com.buzzhives.android.tripplanner.MainActivity.onCreate(MainActivity.java:73)
at android.app.Activity.performCreate(Activity.java:5934)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1279)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5223)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
最佳答案
fragment (无 fragment )已经创建。在任何 fragment 存在或崩溃之前,您不能调用 getFragment。它可能不应该(应该可能返回 null),但它是一个错误。
关于android - ChildFragmentManager.getFragment() 和 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325924/
这是我的问题,我有一个 Activity,其中包括一个使用 (FragmentStatePagerAdapter) 的 ViewPager 的 Fragment,当 Activity 第一次加载时一切
我遇到了一个疯狂的小“错误”,或者我只是做错了什么。我正在尝试获取对 fragment 内 fragment 的引用。所以我们有 ParentFragment,它是 MainActivity 的子项。
因此,当我尝试将某些内容放入 fragment 的子 fragment 管理器中时,我偶然发现了可怕的 Can not perform this action after onSaveInstance
我的应用建立在许多 fragment 之上,我用水平滑动动画改变了这些 fragment 。一些 fragment 包含带有 FragmentStatePagerAdapter 的 ViewPager
我有一个托 pipe fragment 的父 fragment 。我对我的应用程序进行了压力测试,通过在开发人员选项中选中“不保留 Activity ”,然后按下主页按钮来强制终止它。 可以看到父 f
我尝试使用 getChildFragmentManager() 在 viewpager 的另一个 fragment 内添加一个 fragment 。我收到以下错误, java.lang.Illeg
我正在尝试在我的 ViewPager 中恢复一个 fragment 以解决一些问题,并编写了一些在正常使用时可以完美运行的代码,但是当我尝试使其成为一个通用函数以重用它时,它不起作用。 无论我尝试在
我想将一个 fragment 作为子添加到另一个 fragment 我正在使用 ChildFragmentManager 这是我的 ChildFragmentManagerActivity.java
编辑 2 我现在设法摆脱了使用这里的技巧 https://code.google.com/p/android/issues/detail?id=42601#c10 的错误所以这就是为什么我最后一次编辑
我开发了一个应用程序,它使用 fragment 作为 fragment 的一部分。 public class LoginFragment extends Fragment EditTextWit
我是一名优秀的程序员,十分优秀!