やりたいこと
putParcelableでBundleに値を投げて、getPrcelableで値を取得したい
発生している問題・エラーメッセージ
getPrcelableが使えない
該当のソースコード
ArticleFragment.kt
1import android.os.Bundle 2import android.os.Parcel 3import android.os.Parcelable 4import android.view.KeyEvent 5import android.view.LayoutInflater 6import android.view.View 7import android.view.ViewGroup 8import android.webkit.WebView 9import androidx.fragment.app.Fragment 10import sample.qiitaclient.model.Article 11import sample.qiitaclient.view.ArticleView 12import android.util.Log 13 14private const val ARG_LEY_1 = "articleFragment" 15 16class ArticleFragment() : Fragment() { 17 18 companion object { 19 fun newInstance(article: Article) : ArticleFragment { 20 return ArticleFragment().apply { 21 arguments = Bundle().apply { 22 putParcelable(ARG_LEY_1,article) 23 } 24 } 25 } 26 } 27 28 override fun onCreateView( 29 inflater: LayoutInflater, 30 container: ViewGroup?, 31 savedInstanceState: Bundle? 32 ): View? { 33 return inflater.inflate(R.layout.article_activity,container,false) 34 } 35 36 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 37 super.onViewCreated(view, savedInstanceState) 38 39 val article = arguments.getParcelable(ARG_LEY_1) // ここのgetParcelableに赤線が付いて使用できない 40 //以下省略
MainActivityでnewInstanceには値を渡しています
MainActivity.kt
1ArticleFragment.newInstance(article)
モデムの設定は以下になります。
Article.kt
1package sample.qiitaclient.model 2 3import android.os.Parcel 4import android.os.Parcelable 5import kotlinx.android.parcel.Parcelize 6 7@Parcelize 8data class Article(val id: String, 9 val title: String, 10 val url: String, 11 val user: User?) : Parcelable { 12 13 constructor(lastSearch: LastSearch) : this( 14 id = lastSearch.id, 15 title = lastSearch.title, 16 url = lastSearch.url, 17 user = User(id = "", name = lastSearch.name, profileImageUrl = lastSearch.profileImageUrl) 18 ) 19 20 constructor(favorite: Favorite) : this( 21 id = favorite.id, 22 title = favorite.title, 23 url = favorite.url, 24 user = User(id = "", name = favorite.name, profileImageUrl = favorite.profileImageUrl) 25 ) 26 27 companion object { 28 @JvmField 29 val CREATOR: Parcelable.Creator<Article> = object : Parcelable.Creator<Article> { 30 override fun createFromParcel(source: Parcel): Article = source.run { 31 Article(readString().toString(), readString().toString(), readString().toString(), 32 readParcelable(Article::class.java.classLoader)) 33 } 34 35 override fun newArray(size: Int): Array<Article?> = arrayOfNulls(size) 36 } 37 } 38 39 override fun describeContents(): Int = 0 40 41 override fun writeToParcel(dest: Parcel, flags: Int) { 42 dest.run { 43 writeString(id) 44 writeString(title) 45 writeString(url) 46 writeParcelable(user, flags) 47 } 48 } 49}
解決できずに悩んでいます、詳しい方教えていただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。