適当にListViewのレイアウトを作って、表示するコードを書いてみました。
今回、Tabで画面切り替わるので、コード書くファイルは
「ListFragment.java」
になるんですが...
ここにListView表示するコード書くと…
また、あの「Rのエラー」が出る!!
前回は、なんとか回避できた感じだったけど…
今回、対のFragmentのxmlファイルの部品を参照するんじゃなくて、まったく別のLIST用のxmlファイル参照したいし…これは回避不可能じゃない??
と、いうことで、もうやっつけ気分で、
SHIFT+ALT+ENTER
でテキトーにclassインポートしたら消えました
インポートされたのは、この一行!
import ksapp.buymemo.R;
赤字はパッケージ名みたいなヤツなのですが、末尾に「.R」付いたらなぜOKなのかは謎。
もしかして、「ListFragment.java」が「ui」とか「List」とかのフォルダ配下に格納されてるから、階層違うからRが認識しないのかな…わからん...
もしかして、RのエラーはFragmentのせい?...わからん
とりあえず、エラー消えたので、メモしておきます。
■ ■ ■
Rのエラーが消えたら、新手のエラーが出てきたww
「findViewById」は「binding」でも使ってるとこあったよーなー
ListView list = findViewById(R.id.list);
↓binding使う方法に変更
ListView list = binding.getRoot().findViewById(R.id.list);
エラー消えた!!
あとは、Adapterをセットするとこのcontextか…
私、contextが何なのかわからないwww
今まで見本コード丸々コピペで問題ない箇所だったもんな…
多分、Fragmentにコード書こうとしてるのがダメなんだろうな…
ということで、「Fragment」「ListView」でぐぐってみる
同じことやりたくて、同じとこで悩んでる先人がいらっしゃいました
this
↓
requireContext()
でいけるようです
↓ベストアンサーの回答
Fragmentの中でgetContext()(コード上はcontext)を用いたときの戻り値はContext?型(Null許容型)になります。これをContext型(Null非許容型)を求める引数に直接与えることはできず、質問のようなエラーになってしまいます。そのようなときの代替APIとして、requireContext()というものがあります。それを用いて
解説を読んでも理解できません...が、とりあえず、動きました
次はデータ追加と保持あたりかな…
SQLiteのDB作らなくても、sharedpreferences程度でいけるかな~