当前位置: 首页 > 知识库问答 >
问题:

Android运行时异常(app无法打开)

郎曜文
2023-03-14

E/AndroidRuntime:致命异常:main

进程:za.co.riggaroo.motioncamera,pid:17583 kotlin.typeCastException:null不能强制转换为非空类型kotlin.boolean(位于za.co.riggaroo.motioncamera.mainactivity$setuparmsystemtogle$2.ondatachange(mainactivity.kt:42)(位于com.google.android.gms.internal.to.zza(未知源)(位于com.google.android.gms.internal.vj.zzhx(未知源)(位于

package za.co.riggaroo.motioncamera

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.SwitchCompat
import android.util.Log
import android.widget.ImageView
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener

class MainActivity : AppCompatActivity() {

private lateinit var adapter: LogsAdapter
private lateinit var armSystemToggleButton: SwitchCompat
private lateinit var armSystemImageView: ImageView

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

    setupMotionLogsRecyclerView()
    setupArmSystemToggle()
}

private fun setupArmSystemToggle() {
    armSystemToggleButton = findViewById(R.id.switch_arm_system)
    armSystemImageView = findViewById(R.id.image_view_arm_system)
    val armedValue =
            FirebaseDatabase.getInstance().getReference(SYSTEM_ARMED_STATUS_FIREBASE_REF)

    armSystemToggleButton.setOnCheckedChangeListener { _, checkedValue ->
        armedValue.setValue(checkedValue)
    }

    armedValue.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            Log.d(ACT_TAG, "onDataChange:" + dataSnapshot.toString())
            val isArmed = dataSnapshot.value as Boolean
            toggleUIState(isArmed)
        }

        override fun onCancelled(p0: DatabaseError?) {

        }

    })
}

private fun toggleUIState(isArmed: Boolean) {
    armSystemToggleButton.isChecked = isArmed
    armSystemToggleButton.text = if (isArmed) {
        getString(R.string.system_armed)
    } else {
        getString(R.string.system_unarmed)
    }
    val armedImageResource = if (isArmed) {
        R.drawable.ic_armed
    } else {
        R.drawable.ic_not_armed
    }
    armSystemImageView.setImageResource(armedImageResource)

}

private fun setupMotionLogsRecyclerView() {
    val recyclerViewImages = findViewById<RecyclerView>(R.id.recyclerViewImages)
    recyclerViewImages.isNestedScrollingEnabled = false
    val databaseRef = FirebaseDatabase.getInstance().getReference(MOTION_LOGS_FIREBASE_REF)

    adapter = LogsAdapter(databaseRef.orderByChild(ORDER_BY_TIMESTAMP).ref)
    val linearLayoutManager = LinearLayoutManager(this)
    linearLayoutManager.reverseLayout = true
    linearLayoutManager.stackFromEnd = true
    recyclerViewImages.layoutManager = linearLayoutManager
    recyclerViewImages.adapter = adapter
}

override fun onDestroy() {
    super.onDestroy()
    adapter.cleanup()
}

companion object {
    private const val ORDER_BY_TIMESTAMP = "timestamp"
    private const val ACT_TAG: String = "MainActivity"
    private const val MOTION_LOGS_FIREBASE_REF = "motion-logs"
    private const val SYSTEM_ARMED_STATUS_FIREBASE_REF = "system-armed"
}


}

共有1个答案

邰昀
2023-03-14

请在OnDataChange(..)中尝试此操作

     if(dataSnapshot.value != null) {          
          val isArmed = dataSnapshot.value as Boolean
          toggleUIState(isArmed)
     }
 类似资料:
  • 代码activity_lastcall.xml: 代码lastcall.java: 代码AndroidManifest.xml: 我需要得到最后一个电话,并在TextView中写入号码和姓名。

  • 运行在Nexus5(Android6.0)中的我的应用程序出现错误。 错误是

  • 问题内容: 尽管 通过终端执行相同的命令时没有问题 , 但 我却遇到了类似执行以下命令时的异常情况 。 我需要执行并返回以下命令的输出: 这是使用类执行命令的方法: 问题答案: Runtime.exec不使用外壳程序(例如);它将命令直接传递到操作系统。这意味着将不会理解通配符(例如)和管道(),因为(像所有Unix命令一样)不会对这些字符进行任何解析。您需要使用类似 或者,如果出于某些奇怪的原因

  • 我正在使用以下联系人获取应用程序的代码,我正在获得Android运行时:致命的异常:第17行的主要错误。 下面是我的logcat E/AndroidRuntime:致命异常:主进程:com.example.alpesh_pc.contactList,PID:3833 java.lang.RuntimeException:无法启动activity组件信息{com.example.alpesh_pc.

  • 而且 现在我要测试代码。 我将“测试”作为java应用程序运行,得到的结果是: 谢谢大家。