2014-02-07 145 views
3

观点我越来越java.lang.IllegalArgumentException异常:未找到ID

java.lang.IllegalArgumentException异常:

开始cameraIntent检索后从onActivityResult数据时。我正在处理嵌套片段。

这是场景。 MainActivity.class

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
} 
} 

,我在MainActivity

ParentFragment.class

public class ParentFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.parent_fragment, null); 

     return v; 
    } 
} 

而在ParentFragment我夸大其调用cameraIntent的ChildFragment膨胀父片段。

ChildFragment.class

public class ChildFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.child_fragment, container, 
       false); 

     return v; 
    } 
} 

我AndroidManifest宣布该活动将只在肖像模式。

我得到这个java.lang.IllegalArgumentException:随机且仅在某些三星设备上。我注意到,当您在某些三星设备上打开相机时,相机处于横向模式,并且在相机关闭后不久(保存照片),应用程序处于横向模式,并且快速旋转至AndroidManifest中声明的纵向。 此错误完全是随机发生的。有时在5-6个图像被捕获后,有时在第一个图像上。

这是我的完整logcat错误。

: java.lang.IllegalArgumentException: No view found for id 0x7f0600da (com.example.app:id/parent_fragment_bottom_container) for fragment ChildFragment 
{41d21e50 #23 id=0x7f0600da} 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3512) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread.access$700(ActivityThread.java:130) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.os.Looper.loop(Looper.java:137) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at android.app.ActivityThread.main(ActivityThread.java:4745) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at java.lang.reflect.Method.invokeNative(Native Method) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at java.lang.reflect.Method.invoke(Method.java:511) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-30 16:14:14.855: E/AndroidRuntime(16047): at dalvik.system.NativeStart.main(Native Method) 
01-30 16:14:14.855: E/AndroidRuntime(16047): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0600da (com.example.app:id/parent_fragment_bottom_container) for fragment ChildFragment{41d21e50 #23 id=0x7f0600da 
+0

我的猜测是父片段被破坏,而不是被重新连接到您的活动。 这可能是因为您的活动已暂停,或由于屏幕方向更改。 尝试将您的Super.OnCreate移动到设置contentview后,因为如果活动被销毁并正在重新创建,您将覆盖保存已保存片段的视图并显示新视图。 我也会把一些日志消息放在所有活动/片段onCreateView和销毁,这样你就可以看到发生了什么。 – NameSpace

+0

@ user3126670我没有将日志消息放在onCreateView,onCreate,onPause,onResume等等。有时当我点击“fire cameraIntent button”时,onPause不会被调用,抛出异常。是完全随机发生的。有什么建议么? – Naskov

+0

您提到相机关闭时发生错误。也许“暂停”正在跳过,直奔onDestroy ...我相信会发生。在onCreate中记录你的第一行,看看相机关闭时是否调用了onCreate。如果是这样,那么这是您的活动重新创建的问题。 – NameSpace

回答

-2

MainActivity应该延伸FragmentActivity而不仅仅是Activity

像下面,

public class MainActivity extends FragmentActivity   // Change here 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 
+0

负面的,这不是解决方案,这个错误是完全随机的,只发生在三星设备上。 FragmentActivity不会解决这个问题。 – Naskov

+1

只有在使用android.support.v4.app.Fragment的情况下才会出现这种情况,我无法确定它是如何使用的。很确定,如果是这样的话,它甚至不会编译。 – NameSpace

+0

是的,我正在使用android.support.v4.app.Fragment,但这不是问题,这与Fragment LifeCycle有关。导致有时当我启动CameraIntent时,片段和Activity未进入onPause。 – Naskov