回答編集履歴

1

タブに実際にフラグメントを切り替えるコードを追加

2020/04/29 15:06

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -101,3 +101,87 @@
101
101
  Home にだけタブが出るようになります.
102
102
 
103
103
  後は Home でタブを選択した時に対応するクラグメントを fragment_home 内に表示するようにするだけに思いますが, 如何なのでしょうか.
104
+
105
+
106
+
107
+ #追記
108
+
109
+ 例えばフラグメント3つ(HomeFragmentTab1/2/3)をタブで切り替えるとしますと, 以下のようになるかと思います.
110
+
111
+ ```java
112
+
113
+ public class HomeFragment extends Fragment {
114
+
115
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
116
+
117
+ return inflater.inflate(R.layout.fragment_home, container, false);
118
+
119
+ }
120
+
121
+ @Override
122
+
123
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
124
+
125
+ HomePagerAdapter adapter = new HomePagerAdapter(getChildFragmentManager());
126
+
127
+ ViewPager viewPager = view.findViewById(R.id.pager);
128
+
129
+ viewPager.setAdapter(adapter);
130
+
131
+
132
+
133
+ TabLayout tabLayout = view.findViewById(R.id.tab_layout);
134
+
135
+ tabLayout.setupWithViewPager(viewPager);
136
+
137
+ }
138
+
139
+
140
+
141
+ public static class HomePagerAdapter extends FragmentPagerAdapter {
142
+
143
+ HomePagerAdapter(FragmentManager fm) {
144
+
145
+ super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
146
+
147
+ }
148
+
149
+ @Override
150
+
151
+ public int getCount() {
152
+
153
+ return 3;
154
+
155
+ }
156
+
157
+ @Override
158
+
159
+ public Fragment getItem(int i) {
160
+
161
+ switch(i) {
162
+
163
+ case 0: return new HomeFragmentTab1();
164
+
165
+ case 1: return new HomeFragmentTab2();
166
+
167
+ case 2: return new HomeFragmentTab3();
168
+
169
+ }
170
+
171
+ return null;
172
+
173
+ }
174
+
175
+ @Override
176
+
177
+ public CharSequence getPageTitle(int position) {
178
+
179
+ return "tab " + (position + 1);
180
+
181
+ }
182
+
183
+ }
184
+
185
+ }
186
+
187
+ ```