Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段崩溃:java.lang.IllegalArgumentException:未找到任何视图_Android_Android Fragments - Fatal编程技术网

Android 片段崩溃:java.lang.IllegalArgumentException:未找到任何视图

Android 片段崩溃:java.lang.IllegalArgumentException:未找到任何视图,android,android-fragments,Android,Android Fragments,我的应用程序当前出现了一个崩溃,我只能通过具有以下堆栈的Crashlytics来检测: java.lang.RuntimeException: Unable to resume activity {com.my.app/com.my.app.activities.SplashActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f080048 (com.my.app.activities:id/contain

我的应用程序当前出现了一个崩溃,我只能通过具有以下堆栈的Crashlytics来检测:

java.lang.RuntimeException: Unable to resume activity {com.my.app/com.my.app.activities.SplashActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f080048 (com.my.app.activities:id/container) for fragment l{453a70a8 #0 id=0x7f080048 FragmentXpto}
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2836)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2865)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2291)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:212)
       at android.app.ActivityThread.main(ActivityThread.java:5137)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:718)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f080048 (com.my.app:id/container) for fragment l{453a70a8 #0 id=0x7f080048 DropboxFirstLinkFragment}
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:939)
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1126)
       at android.support.v4.app.BackStackRecord.run(SourceFile:739)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:1489)
       at android.support.v4.app.FragmentActivity.onPostResume(SourceFile:434)
       at android.support.v7.app.ActionBarActivity.onPostResume(SourceFile:115)
       at android.app.Activity.performResume(Activity.java:5323)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2826)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2865)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2291)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:212)
       at android.app.ActivityThread.main(ActivityThread.java:5137)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:718)
       at dalvik.system.NativeStart.main(NativeStart.java)
我的活动布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"></FrameLayout>
这是“一生中只有一次”可复制的问题之一。。。所以我没有传递错误的视图id,或者类似的东西,否则它会频繁崩溃

更多信息:

  • 在setContentView之后或onResume上,我在SplashActivity的onCreate方法上使用带有replace的FragmentTransaction:

    FragmentTransaction=MFFragmentManager.beginTransaction().replace(R.id.container, 新片段,标签); commit()


有人能给我解释一下为什么/什么时候会发生这种情况,以及我如何预防这种情况吗?我已经通过验证if
findViewById(R.id.container)!=null
且仅在本例中执行Fragment.replace。

无论何时为空,我都会存储该操作,并在活动的下一次onResume时重试该操作。


我想我已经发现了这个问题,因为我看到在恢复时经过onResume的片段没有经过onCreateView,它们在恢复时不在FragmentManager堆栈的顶部,并且在后台活动被终止之后

你的片段的xml视图在哪里?你能告诉我们更多关于崩溃的信息吗?您是如何复制它的?请检查
R.id.container
,它不是found@D3LIC1OU5我不是。我现在才知道这是因为我收到了crashlytics的报告。每个版本的应用程序都会发生1-2次。。“这意味着它真的很少见。”伊恩维克在问题上添加了布局。
void moveToState(Fragment f, int newState, int transit, int transitionStyle,
            boolean keepActive) {
        // Fragments that are not currently added will sit in the onCreate() state.


...

   case Fragment.CREATED:
     if (newState > Fragment.CREATED) {
       if (DEBUG) Log.v(TAG, "moveto ACTIVITY_CREATED: " + f);
          if (!f.mFromLayout) {
              ViewGroup container = null;
              if (f.mContainerId != 0) {
                container = (ViewGroup)mContainer.findViewById(f.mContainerId);
                  if (container == null && !f.mRestored) {
                     throwException(new IllegalArgumentException(
                                            "No view found for id 0x"
                                            + Integer.toHexString(f.mContainerId) + " ("
                                            + f.getResources().getResourceName(f.mContainerId)
                                            + ") for fragment " + f));
                                }
                            }
     ...