Note that there are some explanatory texts on larger screens.

plurals
  1. POnested fragment + FragmentStatePagerAdapter
    text
    copied!<p>I'm trying to use a Fragment(parent fragment) with a View-Pager using the FragmentStatePagerAdapter (because dynamically adding fragments) having videos fetched from the you-tube in different pages of the view pager. when you-tube video is clicked in the view pager fragment(nested fragment) then the parent fragment is replaced by the another fragment which play the corresponding you-tube videos. </p> <p>I am able to move back and forth between the 2 fragment(fragment containing view-pager and fragment containing you-tube player). but after some back and forth movement my app crashes due to <strong>stackoverflow error</strong> </p> <p>After searching various blogs and post in stack overflow i find out my nested fragment is not popped from the back stack. I already tried the solution like -</p> <pre><code>public void onBackPressed() { if (!fragment.getChildFragmentManager().popBackStackImmediate()) { finish(); } } } </code></pre> <p>where fragment is the fragment containing the view-pager but app still crashes.</p> <p>Below is my crash report and related code </p> <p><strong>Crash Report</strong> - </p> <p>07-05 16:49:24.033: E/ACRA(32192): org.pckg.name fatal error : null 07-05 16:49:24.033: E/ACRA(32192): java.lang.StackOverflowError 07-05 16:49:24.033: E/ACRA(32192): at android.text.TextLine.handleText(TextLine.java:747) 07-05 16:49:24.033: E/ACRA(32192): at android.text.TextLine.handleRun(TextLine.java:898) 07-05 16:49:24.033: E/ACRA(32192): at android.text.TextLine.measureRun(TextLine.java:414) 07-05 16:49:24.033: E/ACRA(32192): at android.text.TextLine.measure(TextLine.java:293) 07-05 16:49:24.033: E/ACRA(32192): at android.text.TextLine.metrics(TextLine.java:267) 07-05 16:49:24.033: E/ACRA(32192): at android.text.Layout.getLineExtent(Layout.java:977) 07-05 16:49:24.033: E/ACRA(32192): at android.text.Layout.drawText(Layout.java:329) 07-05 16:49:24.033: E/ACRA(32192): at android.text.Layout.draw(Layout.java:205) 07-05 16:49:24.033: E/ACRA(32192): at android.text.BoringLayout.draw(BoringLayout.java:400) 07-05 16:49:24.033: E/ACRA(32192): at android.widget.TextView.onDraw(TextView.java:5030) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13712) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.widget.AbsListView.dispatchDraw(AbsListView.java:2327) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): at android.widget.AbsListView.draw(AbsListView.java:3653) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): at android.support.v4.view.ViewPager.draw(ViewPager.java:2153) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): at android.widget.FrameLayout.draw(FrameLayout.java:467) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): at android.view.View.getDisplayList(View.java:12648)</p> <p><strong>Code</strong> - Parent Fragment onCreate() method - </p> <pre><code>public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "video detail frag onCreate"); Log.d(TAG, "bundle of onCreate = " + savedInstanceState); if(savedInstanceState == null){ gPageList = getFragments(); ArrayList&lt;String&gt; pageTitle = generatePageTitle(); gDetailPagerAdapter = new CustomPagerAdapter(getChildFragmentManager(), gPageList, pageTitle); }else{ isCategoryTabAdded = savedInstanceState.getBoolean("isCategoryTabAdded"); isSearchTabAdded = savedInstanceState.getBoolean("isSearchTabAdded"); } } </code></pre> <p><strong>viewpager fragment onItemClick() code</strong> - </p> <pre><code>public void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int position, long arg3) { if (gVideoList != null) { FragmentManager fragManager = getParentFragment().getChildFragmentManager(); FragmentTransaction fragTrans = fragManager.beginTransaction(); Fragment uTubeVideoFrag = FragmentYouTubeVideoPlayer.newInstance( position, gVideoList.get(position).gVideoId); fragTrans.replace(R.id.content_frame, uTubeVideoFrag); fragTrans.addToBackStack(null); fragTrans.commit(); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload