構造体は次のとおりです。私は1つのアクティビティと複数のフラグメントを使用してアプリケーションを構築したいと考えています。 MainActivityには、コンテナとして機能するFrameLayoutがあります。最初にFragment_Baseがコンテナに追加されます。そこにはTabLayoutとViewPagerがあり、Tab1、Tab2 & Tab3の3つのタブが含まれています。別のフラグメントから返された場合のVIewPagerの表示エラー
次に、Tab1にボタンがあります。これをクリックすると、Framelayout(コンテナ)がFragment_Searchに置き換えられます。実際に動作し、新しいFragment_Searchが表示されます。しかし、電話で[戻る]ボタンをクリックして元の断片に戻ると、何かが間違っています。ここで
が変更される:
これは3つのタブでFragment_Baseの元の状態である
Tab1を上のボタンをクリックし、へFragment_Search
戻るにジャンプFragment_Base、間違って取得します。
ご覧のとおり、Tab1のすべてのウィジェットは表示されなくなりますが、Tab2-> Tab3-> Tab2-> Tab1にスワイプすると再び表示されます。 Tab2の背景はオレンジ色で、消えるだけです。さらに奇妙なことは、TabLayoutのtab2のインジケータバーが間違った位置にあることです。これは、タブ3 - >タブ2にスワイプすると正常になります。
MainActivity.java、OnCreate関数(IN):Fragment_Base.java、OnCreateView()において
if (findViewById(R.id.framelayout_base) != null) { if (savedInstanceState != null) { return ; } Frag_Base frag_base = new Frag_Base(); getSupportFragmentManager().beginTransaction() .add(R.id.framelayout_base, frag_base) .commit(); }
:
View view = inflater.inflate(R.layout.fragment_base, container, false); fragmentActivity = getActivity(); // initial views mViewPager = view.findViewById(R.id.viewPager_); mFragmentPagerAdapter = new MainFragmentPagerAdapter(fragmentActivity.getSupportFragmentManager()); mViewPager.setAdapter(mFragmentPagerAdapter); mTabLayout = view.findViewById(R.id.tabLayout_); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.getTabAt(0).setIcon(R.drawable.ic_search); mTabLayout.getTabAt(1).setIcon(R.drawable.ic_star); mTabLayout.getTabAt(2).setIcon(R.drawable.ic_profile);
ここ
はいくつかのコードでありますMainFragmentPagerAdapter.javaでは、getItem(int position):
Fragment1.java、クリック時(ビュービュー)ではswitch (position) { case 0: return new Fragment1(); case 1: return new Fragment2(); case 2: return new Fragment3(); default: return null; }
:
: すべてのログは、実際に、白ですが、ここでは全てのフラグメントのログですcase R.id.fab_gotoSearch: Log.d(TAG, "onClick: "+"go to search"); Frag_Search frag_search = new Frag_Search(); getFragmentManager().beginTransaction() .replace(R.id.framelayout_base, frag_search) .addToBackStack(null) .commit(); break;
EDIT
10-21 09:34:25.923 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onAttach: 10-21 09:34:25.923 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onCreate: 10-21 09:34:25.925 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onCreateView: 10-21 09:34:25.974 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onStart: 10-21 09:34:25.976 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onResume: 10-21 09:34:26.015 5537-5537/com.project.nanfang.music_n D/Fragment1: onAttach: 10-21 09:34:26.015 5537-5537/com.project.nanfang.music_n D/Fragment1: onCreate: 10-21 09:34:26.015 5537-5537/com.project.nanfang.music_n D/Fragment2: onAttach: 10-21 09:34:26.015 5537-5537/com.project.nanfang.music_n D/Fragment2: onCreate: 10-21 09:34:26.016 5537-5537/com.project.nanfang.music_n D/Fragment1: onCreateView: 10-21 09:34:26.090 5537-5537/com.project.nanfang.music_n D/Fragment1: onStart: 10-21 09:34:26.090 5537-5537/com.project.nanfang.music_n D/Fragment1: onResume: 10-21 09:34:26.090 5537-5537/com.project.nanfang.music_n D/Fragment2: onCreateView: 10-21 09:34:26.093 5537-5537/com.project.nanfang.music_n D/Fragment2: onStart: 10-21 09:34:26.093 5537-5537/com.project.nanfang.music_n D/Fragment2: onResume: 10-21 09:34:41.028 5537-5537/com.project.nanfang.music_n D/Fragment3: onAttach: 10-21 09:34:41.028 5537-5537/com.project.nanfang.music_n D/Fragment3: onCreate: 10-21 09:34:41.028 5537-5537/com.project.nanfang.music_n D/Fragment3: onCreateView: 10-21 09:34:41.030 5537-5537/com.project.nanfang.music_n D/Fragment3: onStart: 10-21 09:34:41.030 5537-5537/com.project.nanfang.music_n D/Fragment3: onResume: 10-21 09:34:46.933 5537-5537/com.project.nanfang.music_n D/Fragment1: onPause: 10-21 09:34:46.933 5537-5537/com.project.nanfang.music_n D/Fragment1: onStop: 10-21 09:34:51.374 5537-5537/com.project.nanfang.music_n D/Fragment1: onCreateView: 10-21 09:34:51.410 5537-5537/com.project.nanfang.music_n D/Fragment1: onStart: 10-21 09:34:51.411 5537-5537/com.project.nanfang.music_n D/Fragment1: onResume: 10-21 09:35:01.860 5537-5537/com.project.nanfang.music_n D/Fragment3: onPause: 10-21 09:35:01.860 5537-5537/com.project.nanfang.music_n D/Fragment3: onStop: 10-21 09:35:08.150 5537-5537/com.project.nanfang.music_n D/Fragment1: onClick: go to search 10-21 09:35:08.152 5537-5537/com.project.nanfang.music_n D/Frag_Search: onAttach: 10-21 09:35:08.152 5537-5537/com.project.nanfang.music_n D/Frag_Search: onCreate: 10-21 09:35:08.152 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onPause: 10-21 09:35:08.152 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onStop: 10-21 09:35:08.159 5537-5537/com.project.nanfang.music_n D/Frag_Search: onCreateView: 10-21 09:35:08.243 5537-5537/com.project.nanfang.music_n D/Frag_Search: onStart: 10-21 09:35:08.243 5537-5537/com.project.nanfang.music_n D/Frag_Search: onResume: 10-21 09:35:13.843 5537-5537/com.project.nanfang.music_n D/Frag_Search: onPause: 10-21 09:35:13.843 5537-5537/com.project.nanfang.music_n D/Frag_Search: onStop: 10-21 09:35:13.854 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onCreateView: 10-21 09:35:13.874 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onStart: 10-21 09:35:13.874 5537-5537/com.project.nanfang.music_n D/Fragment_Base: onResume:
Fragment_Baseに戻った後、Fragment1はOnCreate()を呼び出さないようです。これは問題ですか?
あなたのエラーログを投稿する –