ncapdevi / FragNav

An Android library for managing multiple stacks of fragments
1.5k stars 220 forks source link

Crash SupportMapFragment #70

Closed evgenybozhko2 closed 7 years ago

evgenybozhko2 commented 7 years ago

Hi, I have issue with root fragment of one item in the tabbar, which include supportMapFragment;

 android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class fragment
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
                                                                          at .ui.fragment.map.MapFragment.onCreateView(MapFragment.java:64)
                                                                          at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
                                                                          at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                                                                          at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753)
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
                                                                          at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
                                                                          at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
                                                                          at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:763)
                                                                          at com.ncapdevi.fragnav.FragNavController.executePendingTransactions(FragNavController.java:631)
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:142)
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:158)
                                                                          at .ui.activity.TabActivity.onTabSelected(TabActivity.java:124)
                                                                          at .ui.widget.tab.TabBar.onClick(TabBar.java:144)
                                                                          at android.view.View.performClick(View.java:5697)
                                                                          at android.view.View$PerformClick.run(View.java:22526)
                                                                          at android.os.Handler.handleCallback(Handler.java:739)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                          at android.os.Looper.loop(Looper.java:158)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:7224)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                       Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                                                                          at .ui.fragment.map.MapFragment.onCreateView(MapFragment.java:64) 
                                                                          at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                                                                          at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                                                                          at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
                                                                          at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
                                                                          at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:763) 
                                                                          at com.ncapdevi.fragnav.FragNavController.executePendingTransactions(FragNavController.java:631) 
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:142) 
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:158) 
                                                                          at .ui.activity.TabActivity.onTabSelected(TabActivity.java:124) 
                                                                          at .ui.widget.tab.TabBar.onClick(TabBar.java:144) 
                                                                          at android.view.View.performClick(View.java:5697) 
                                                                          at android.view.View$PerformClick.run(View.java:22526) 
                                                                          at android.os.Handler.handleCallback(Handler.java:739) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                          at android.os.Looper.loop(Looper.java:158) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:7224) 
                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                                                                       Caused by: java.lang.IllegalArgumentException: Binary XML file line #2: Duplicate id 0x7f10018b, tag null, or parent id 0x7f100099 with another fragment for com.google.android.gms.maps.SupportMapFragment
                                                                          at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3447)
                                                                          at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)
                                                                          at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:192)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:758)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                                                                          at .ui.fragment.map.MapFragment.onCreateView(MapFragment.java:64) 
                                                                          at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                                                                          at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                                                                          at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
                                                                          at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
                                                                          at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 
                                                                          at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:763) 
                                                                          at com.ncapdevi.fragnav.FragNavController.executePendingTransactions(FragNavController.java:631) 
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:142) 
                                                                          at com.ncapdevi.fragnav.FragNavController.switchTab(FragNavController.java:158) 
                                                                          at .ui.activity.TabActivity.onTabSelected(TabActivity.java:124) 
                                                                          at .ui.widget.tab.TabBar.onClick(TabBar.java:144) 
                                                                          at android.view.View.performClick(View.java:5697) 
                                                                          at android.view.View$PerformClick.run(View.java:22526) 
                                                                          at android.os.Handler.handleCallback(Handler.java:739) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                          at android.os.Looper.loop(Looper.java:158) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:7224) 
                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

Solved by this dirty solution

ncapdevi commented 7 years ago

Ah, this is an interesting one. A few questions. For the SupportMapFragment, it's nested in another fragment right? You are using the fragment.getChildFragmentManager() method, not the fragNav methods to transact the SupportMapFragment, correct?

evgenybozhko2 commented 7 years ago

Child mapFragment added into root fragment by inflate process. So, to get they instance using ChildFragmnetManager

getChildFragmentManager() .findFragmentById(R.id.map);

ncapdevi commented 7 years ago

Then it seems to me the issues isn't with the FragNav library, but rather with the SupportMapFragment. I'm not sure what you would propose would be a solution that the library could offer?

evgenybozhko2 commented 7 years ago

Oh, I don't studied this question for the SupportMapFragment. But when I used the same behavior like with this way with using library, I don't receive this crash. This happen only when using your library. Please study this question. For example you can create empty project with FragNav and GoogleMap. Thanks.

pablojoseoroz commented 7 years ago

I have to created SupportMapFragment dinamycally inside a Fragment that is inside FragNav. Is the only way I found to working well.