2

FragmentStatePagerAdapter (フラグメントを動的に追加するため) を使用して View-Pager で Fragment(親フラグメント) を使用しようとしています。ビュー ページャー フラグメント (ネストされたフラグメント) で you-tube ビデオをクリックすると、親フラグメントは、対応する you-tube ビデオを再生する別のフラグメントに置き換えられます。

2 つのフラグメント (view-pager を含むフラグメントと you-tube player を含むフラグメント) の間を行き来できます。しかし、前後に移動した後、stackoverflowエラーが原因でアプリがクラッシュします

さまざまなブログを検索してスタック オーバーフローに投稿した後、ネストされたフラグメントがバック スタックからポップされていないことがわかりました。私はすでに次のような解決策を試しました-

public void onBackPressed() {
          if (!fragment.getChildFragmentManager().popBackStackImmediate()) {
                finish();
        }
    }
} 

ここで、fragment はビューページャーを含むフラグメントですが、アプリは引き続きクラッシュします。

以下は私のクラッシュレポートと関連コードです

クラッシュレポート-

07-05 16:49:24.033: E/ACRA(32192): org.pckg.name 致命的なエラー: null 07-05 16:49:24.033: E/ACRA(32192): java.lang.StackOverflowError 07-05 16 :49:24.033: E/ACRA(32192): android.text.TextLine.handleText(TextLine.java:747) 07-05 16:49:24.033: E/ACRA(32192): android.text.TextLine で。 handleRun(TextLine.java:898) 07-05 16:49:24.033: E/ACRA(32192): android.text.TextLine.measureRun(TextLine.java:414) 07-05 16:49:24.033: E/ ACRA (32192): android.text.TextLine.measure(TextLine.java:293) 07-05 16:49:24.033: E/ACRA(32192): android.text.TextLine.metrics(TextLine.java:267) ) 07-05 16:49:24.033: E/ACRA(32192): android.text.Layout.getLineExtent(Layout.java:977) 07-05 16:49:24.033: E/ACRA(32192): android .text.Layout.drawText(Layout.java:329) 07-05 16:49:24.033: E/ACRA(32192): android.text.Layout.draw(Layout.java:205) 07-05 16:49 :24.033:E/ACRA(32192): android.text.BoringLayout.draw(BoringLayout.java:400) 07-05 16:49:24.033: E/ACRA(32192): android.widget.TextView.onDraw(TextView.java) :5030) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13712) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16 :49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup で。 drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ ACRA (32192): android.view.View.getDisplayList (View.java:12648) 07-05 16:49:24.033: E/ACRA (32192): android.view.View.getDisplayList (View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): でandroid.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16: 49:24.033: E/ACRA(32192): android.widget.AbsListView.dispatchDraw(AbsListView.java:2327) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw で(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): android.widget.AbsListView.draw(AbsListView.java:3653) 07-05 16:49:24.033: E/ACRA (32192): android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) で07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): アンドロイドで。見る。ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java) :12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16 :49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): android.support.v4 で。 view.ViewPager.draw(ViewPager.java:2153) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw で(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA (32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) で07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): アンドロイドで。 view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49: 24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View で。getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ ACRA (32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) で) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): Android で.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49 で:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild( ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033:E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java) :12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16 :49:24.033: E/ACRA(32192): android.view.View.draw(View.java:13715) 07-05 16:49:24.033: E/ACRA(32192): android.widget.FrameLayout で。描画 (FrameLayout.java:467) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12650) 07-05 16:49:24.033: E/ ACRA(32192): Android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): Android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA(32192): でandroid.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) 07-05 16: 49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.draw で(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ACRA (32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) でandroid.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) 07-05 16 :49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View で。描画 (View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ ACRA (32192): android.view.ViewGroup.dispatchDraw (ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA (32192): android.view.View.getDisplayList (View.java:12648) で)android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) 07-05 16 :49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12694) 07-05 16:49:24.033: E/ACRA(32192): android.view.View で。描画 (View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java:2928) 07-05 16:49:24.033: E/ ACRA (32192): android.view.ViewGroup.dispatchDraw (ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA (32192): android.view.View.getDisplayList (View.java:12648) で)E/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java) :2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) でE/ACRA(32192): android.view.View.draw(View.java:13428) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.drawChild(ViewGroup.java) :2928) 07-05 16:49:24.033: E/ACRA(32192): android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 07-05 16:49:24.033: E/ACRA(32192): android.view.View.getDisplayList(View.java:12648) で

コード- 親フラグメントの onCreate() メソッド -

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<String> pageTitle = generatePageTitle();
        gDetailPagerAdapter = new CustomPagerAdapter(getChildFragmentManager(), gPageList, pageTitle);
    }else{
        isCategoryTabAdded = savedInstanceState.getBoolean("isCategoryTabAdded");
        isSearchTabAdded = savedInstanceState.getBoolean("isSearchTabAdded");

    }
}

viewpager フラグメント onItemClick() コード-

public void onItemClick(AdapterView<?> 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();
    }
}
4

0 に答える 0