觀點我越來越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
我的猜測是父片段被破壞,而不是被重新連接到您的活動。 這可能是因爲您的活動已暫停,或由於屏幕方向更改。 嘗試將您的Super.OnCreate移動到設置contentview後,因爲如果活動被銷燬並正在重新創建,您將覆蓋保存已保存片段的視圖並顯示新視圖。 我也會把一些日誌消息放在所有活動/片段onCreateView和銷燬,這樣你就可以看到發生了什麼。 – NameSpace
@ user3126670我沒有將日誌消息放在onCreateView,onCreate,onPause,onResume等等。有時當我點擊「fire cameraIntent button」時,onPause不會被調用,拋出異常。是完全隨機發生的。有什麼建議麼? – Naskov
您提到相機關閉時發生錯誤。也許「暫停」正在跳過,直奔onDestroy ...我相信會發生。在onCreate中記錄你的第一行,看看相機關閉時是否調用了onCreate。如果是這樣,那麼這是您的活動重新創建的問題。 – NameSpace