[解決済み】KotlinフラグメントのviewにアクセスしようとするとNullPointerExceptionが発生する
2022-04-04 06:12:02
質問
でKotlin Android Extensionsを使用する方法
Fragment
s?
もし私がそれらを
onCreateView()
このようになります。
NullPointerException
例外が発生します。
原因:java.lang.NullPointerException。仮想的な呼び出しの試み メソッド 'android.view.View android.view.findViewById(int)' を実行します。 ヌルオブジェクト参照
以下は、その断片コードです。
package com.obaied.testrun.Fragment
import android.os.Bundle
import android.support.v4.app.Fragment
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.obaied.acaan.R
import kotlinx.android.synthetic.main.fragment_card_selector.*
public class CardSelectorFragment : Fragment() {
val TAG = javaClass.canonicalName
companion object {
fun newInstance(): CardSelectorFragment {
return CardSelectorFragment()
}
}
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var rootView = inflater?.inflate(R.layout.fragment_card_selector, container, false)
btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); }
return rootView
}
}
`
解決するには?
Kotlinの合成プロパティは魔法ではなく、非常に単純な方法で動作します。アクセスしたときに
btn_K
を呼び出します。
getView().findViewById(R.id.btn_K)
.
問題は、アクセスするのが早すぎることです。
getView()
戻る
null
で
onCreateView
. の中でやってみましょう。
onViewCreated
メソッドを使用します。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); }
}
関連
-
[解決済み】Android - SDKバージョン23のアップデート後、ACTION-VIEWインテントフィルタを持つアクティビティを少なくとも1つ追加する。
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】Android ADB デバイスがオフラインで、コマンドを発行できない。
-
[解決済み】Androidエミュレータのエラーメッセージ。"PANIC: Missing emulator engine program for 'x86' CPUS." (パニック: エミュレータ・エンジン・プログラムがありません)
-
[解決済み】onCreateOptionsMenu(Menu メニュー)とは何ですか?)
-
[解決済み】getCheckedRadioButtonId()が無駄なintを返す?
-
[解決済み】googleコンソールエラー`OR-IEH-01`について
-
[解決済み] SDKの場所がandroid studioで見つからない
-
[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。
-
[解決済み] setBackgroundDrawable() 非推奨
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android - SDKバージョン23のアップデート後、ACTION-VIEWインテントフィルタを持つアクティビティを少なくとも1つ追加する。
-
[解決済み】Android: Intent エラーを処理するアクティビティは見つかりませんでしたか?どのように解決するのか
-
[解決済み】AndroidのSSL接続でトラストアンカーが見つからない
-
[解決済み】アンドロイドクロームブラウザのモバイルウェブアプリケーションのメニューでHTMLユニコード ☰が検出されない。
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】Android Studioの初回起動。Android SDKアドオンリストにアクセスできない
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。