[AndroidStudio]RがエラーなのはFragmentのせい? | 徒然雑記録

徒然雑記録

中3息子と小6娘を持つママです
週二回パートに出てるけど基本家に引きこもってますw
日常生活であった事をメモのごとく書いています

こどもの影響で見始めた鬼滅の刃にハマり落ちました…

MMDとXISMOを始めました☆

適当に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程度でいけるかな~うーん