2014-02-07 146 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