前提・実現したいこと
発生している問題・エラーメッセージ
はじめてandroidプログラミングという本のチャプター8、フラグメントを使ったスライドショーアプリを開発しています。
230ページのViewPagerとViewAdapterを関連付けさせる下記コードの一文にて、エラーメッセージが出力されました。
pager.adapter = MyAdapter(supportFragmentManager)
Type mismatch: inferred type is MainActivity.MyAdapter but RecyclerView.Adapter<(raw) RecyclerView.ViewHolder!>? was expected
該当のソースコード
kotlin
1package com.example.myslideshow 2 3 4import android.media.MediaPlayer 5import android.os.Bundle 6import android.os.Handler 7import androidx.appcompat.app.AppCompatActivity 8import androidx.fragment.app.Fragment 9import androidx.fragment.app.FragmentManager 10import androidx.fragment.app.FragmentPagerAdapter 11import kotlinx.android.synthetic.main.activity_main.* 12import kotlin.concurrent.timer 13 14class MainActivity : AppCompatActivity() { 15 16 private lateinit var player: MediaPlayer 17 18 class MyAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { 19 private val resources = listOf( 20 R.drawable.slide00, R.drawable.slide01, 21 R.drawable.slide02, R.drawable.slide03, 22 R.drawable.slide04, R.drawable.slide05, 23 R.drawable.slide06, R.drawable.slide07, 24 R.drawable.slide08, R.drawable.slide09 25 ) 26 27 override fun getCount(): Int { 28 return resources.size 29 } 30 31 override fun getItem(position: Int): Fragment { 32 return ImageFragment.newInstance(resources[position]) 33 } 34 } 35 36 override fun onCreate(savedInstanceState: Bundle?) { 37 super.onCreate(savedInstanceState) 38 setContentView(R.layout.activity_main) 39 pager.adapter = MyAdapter(supportFragmentManager) 40 val handler = Handler() 41 timer(period = 5000) { 42 handler.post { 43 pager.currentItem = (pager.currentItem + 1) % 10 44 } 45 } 46 player = MediaPlayer.create(this, R.raw.getdown) 47 player.isLooping = true 48 } 49 50 override fun onResume() { 51 super.onResume() 52 player.start() 53 } 54 55 override fun onPause() { 56 super.onPause() 57 player.pause() 58 } 59} 60
コードの書き漏れを特にないようです。解決方法が知りたいです
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。