java.lang.IllegalArgumentException异常:未找到ID
问题描述:
观点我越来越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
答
你MainActivity
应该延伸FragmentActivity
而不仅仅是Activity
像下面,
public class MainActivity extends FragmentActivity // Change here
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我的猜测是父片段被破坏,而不是被重新连接到您的活动。 这可能是因为您的活动已暂停,或由于屏幕方向更改。 尝试将您的Super.OnCreate移动到设置contentview后,因为如果活动被销毁并正在重新创建,您将覆盖保存已保存片段的视图并显示新视图。 我也会把一些日志消息放在所有活动/片段onCreateView和销毁,这样你就可以看到发生了什么。 – NameSpace
@ user3126670我没有将日志消息放在onCreateView,onCreate,onPause,onResume等等。有时当我点击“fire cameraIntent button”时,onPause不会被调用,抛出异常。是完全随机发生的。有什么建议么? – Naskov
您提到相机关闭时发生错误。也许“暂停”正在跳过,直奔onDestroy ...我相信会发生。在onCreate中记录你的第一行,看看相机关闭时是否调用了onCreate。如果是这样,那么这是您的活动重新创建的问题。 – NameSpace