teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

エラー解決で進展があり、その解決をお願いしたいため

2021/01/28 04:19

投稿

j.f15
j.f15

スコア23

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,8 @@
3
3
  タブの内部のボタンをクリック時に画面遷移するようにしたい。
4
4
  タブ切り替えで別々のビューを表示する機能は出来ています。
5
5
 
6
+ ※エラー解決で進行があったため下部の方で進行内容を追記しました。
7
+
6
8
  ### 発生している問題・エラーメッセージ
7
9
 
8
10
  ```
@@ -185,4 +187,75 @@
185
187
  キャッシュのクリア等も一応行いました。
186
188
 
187
189
  他に確認したいファイル等ありましたら教えてください。
188
- 少しでもわかる方がいましたらご教示お願いしたいです。
190
+ 少しでもわかる方がいましたらご教示お願いしたいです。
191
+
192
+ ~~~~~~~~~~~~~~~~~
193
+ 色々と調べ少し進行できたので追記
194
+ HomeFragmentでbindingを用いていたので子のフラグメント?もbinding形式で実装が必要かと考え編集しました。
195
+
196
+ ・TabtopPageFragmentファイル
197
+ ```
198
+ import android.content.Context
199
+ import android.os.Bundle
200
+ import android.view.LayoutInflater
201
+ import android.view.View
202
+ import android.view.ViewGroup
203
+ import androidx.appcompat.app.AppCompatActivity
204
+ import androidx.fragment.app.Fragment
205
+ import microwave.net.pgm.golfcoursereservationapp.NormalCalendarFragment
206
+ import microwave.net.pgm.golfcoursereservationapp.R
207
+ import microwave.net.pgm.golfcoursereservationapp.databinding.TopPageNormalTabBinding
208
+
209
+
210
+ class TabHomeNormalFragment(context: Context): Fragment(){
211
+
212
+ // private var _viewTabItem : View? = null
213
+ private var _binding: TopPageNormalTabBinding? = null
214
+ private val binding get() = _binding!!
215
+
216
+ override fun onCreateView(
217
+ inflater: LayoutInflater,
218
+ container: ViewGroup?,
219
+ savedInstanceState: Bundle?
220
+ ): View? {
221
+ // _viewTabItem = inflater.inflate(R.layout.top_page_normal_tab, container, false)
222
+ _binding = TopPageNormalTabBinding.inflate(inflater, container, false)
223
+ //Viewに対する処理
224
+ return binding.root
225
+ // return _viewTabItem
226
+ }
227
+
228
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
229
+ super.onViewCreated(view, savedInstanceState)
230
+
231
+ binding.dayBtn.setOnClickListener {
232
+ (activity as AppCompatActivity?)!!.supportFragmentManager.beginTransaction().apply {
233
+ replace(R.id.nav_host_fragment_activity_main, NormalCalendarFragment())
234
+ addToBackStack(null)
235
+ commit()
236
+ }
237
+ }
238
+ }
239
+
240
+ override fun onDestroyView() {
241
+ super.onDestroyView()
242
+ _binding = null
243
+ }
244
+ }
245
+
246
+ class TabHomeOneFragment(context: Context): Fragment(){
247
+ override fun onCreateView(
248
+ inflater: LayoutInflater,
249
+ container: ViewGroup?,
250
+ savedInstanceState: Bundle?
251
+ ): View? {
252
+ return inflater.inflate(R.layout.top_page_one_person_tab, container, false)
253
+ }
254
+ }
255
+ ```
256
+
257
+ すると遷移後のフラグメントが無事に表示はされました。
258
+ しかしaddではなくreplaceでコミットやonDestroyViewメソッドを記述しているのですが、
259
+ 遷移前のフラグメントが残っており、フラグメントが重なってしまっている状態になってしまいました。
260
+
261
+ 何が原因なのか度々すみませんが、ご教示をお願いしたいです。