繁体   English   中英

java.lang.IllegalStateException: findViewById(R.id.addNotes) 不能为空

[英]java.lang.IllegalStateException: findViewById(R.id.addNotes) must not be null

我已经开始以某种方式开发一个应用程序我在 MainActivity.java 类中出现错误并且我无法识别请帮助我提前谢谢

主活动.kt

class MainActivity : AppCompatActivity() {
private lateinit var addNotes: FloatingActionButton
private lateinit var notesRV: RecyclerView
private lateinit var notesList: ArrayList<Notes>
private lateinit var realm: Realm

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val todayFragment = TodayFragment()
    val fragment =
        supportFragmentManager.findFragmentByTag(TodayFragment::class.java.simpleName)

    if (fragment !is TodayFragment) {
        supportFragmentManager.beginTransaction()
            .add(R.id.container, todayFragment, TodayFragment::class.java.simpleName)
            .commit()
    }
    Toast.makeText(this, "Welcome to NoteActivity", Toast.LENGTH_SHORT).show()
    //        init views
    addNotes = findViewById(R.id.addNotes)
    notesRV = findViewById(R.id.notesRV)
    //        onclick add notes btn
    addNotes.setOnClickListener{
        startActivity(Intent(this, AddNotesActivity::class.java))
        finish()
    }

    notesRV.layoutManager = StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL)
    getAllNotes()
}

private fun getAllNotes() {
    notesList.clear()
    notesList = ArrayList()

    val result: RealmResults<Notes> = realm.where<Notes>(Notes::class.java).findAll()

    notesRV.adapter = NotesAdapter(this, result)
    notesRV.adapter!!.notifyDataSetChanged()
}

片段笔记.xml

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBackground"
    tools:context=".NoteFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/notesRV"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"/>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/addNotes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="25dp"
        android:layout_marginBottom="25dp"
        android:backgroundTint="@color/colorPrimary"
        android:src="@drawable/ic_write_white_create_24dp"
        app:backgroundTint="@color/design_default_color_background"
        app:fabSize="normal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是我的日志

2020-10-19 15:07:58.580 24447-24447/com.d3ifcool.notivity E/AndroidRuntime:致命异常:主进程:com.d3ifcool.notivity,PID:24447 java.lang.RuntimeException:无法启动活动com.d3ifcool.notivity/com.d3ifcool.notivity.MainActivity}: java.lang.IllegalStateException: findViewById(R.id.addNotes) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3488) 处不能为空.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android。 app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os .Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.j) ava:7860) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit。 main(ZygoteInit.java:1075) 由:java.lang.IllegalStateException: findViewById(R.id.addNotes) 在 com.d3ifcool.notivity.MainActivity.onCreate(MainActivity.kt:36) at android.app 处不能为 null .Activity.performCreate(Activity.java:7955) 在 android.app.Activity.performCreate(Activity.java:7944) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307) 在 android.app.ActivityThread.performLaunchActivity( ActivityThread.java:3463) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor) .java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app .ActivityThread.main(ActivityThread.java:7860) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android .internal.os.ZygoteInit.main(ZygoteInit.java:1075)

请帮帮我

引起:java.lang.IllegalStateException: findViewById(R.id.addNotes) 在 com.d3ifcool.notivity.MainActivity.onCreate(MainActivity.kt:36) 处不能为空

当您使用 kotlin 时,您真的不需要 findViewById 方法,因为我们可以直接使用 xml id 进行活动。

从活动中删除以下行

 private lateinit var addNotes: FloatingActionButton
 private lateinit var notesRV: RecyclerView

 addNotes = findViewById(R.id.addNotes)
 notesRV = findViewById(R.id.notesRV)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM