android-studio - Kotlin - 我收到错误,因为 id 为空。如何解决?
问题描述
我正在尝试制作一个显示您选择的颜色的程序。因此,您可以在带有颜色阴影的图片上滑动,应用程序会显示您当前的颜色。在它下面有一个文本视图,它将显示当前颜色的 RGB 值。但是当我尝试为颜色选择器编写代码时,我收到了这个错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.leds/com.example.leds.MainActivity}:
java.lang.NullPointerException: color_picker must not be null
我尝试了一切,但我无法修复它。
我的科特林代码:
class MainActivity : AppCompatActivity() {
private lateinit var bitmap:Bitmap
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
color_picker.isDrawingCacheEnabled = true
color_picker.buildDrawingCache(true)
val wheel = findViewById<ImageView>(R.id.color_picker)
wheel.setOnTouchListener { v, event ->
if (event.action == MotionEvent.ACTION_DOWN || event.action == MotionEvent.ACTION_MOVE) {
bitmap = color_picker.drawingCache
val pixel = bitmap.getPixel(event.x.toInt(), event.y.toInt())
val r = Color.red(pixel)
val g = Color.green(pixel)
val b = Color.blue(pixel)
selected_color_view.setBackgroundColor(Color.rgb(r,g,b))
color_value.text = "RGB: $r, $g, $b"
}
true}
我的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/color_picker"
android:layout_width="350dp"
android:layout_height="450dp"
android:src="@drawable/colour_wheel"/>
<View
android:id="@+id/selected_color_view"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:id="@+id/color_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RGB:"
android:textColor="#000"
android:textSize="18sp"/>
解决方案
color_picker
这是因为你在使用它之前没有初始化变量
color_picker.isDrawingCacheEnabled = true
color_picker.buildDrawingCache(true)
你必须像你一样初始化它val wheel = findViewById<ImageView>(R.id.color_picker)
,然后你可以像这样修改它
wheel.isDrawingCacheEnabled = true
@EDIT您必须先初始化变量轮,然后才能调用它的属性。
val wheel = findViewById<ImageView>(R.id.color_picker)
wheel.isDrawingCacheEnabled = true
wheel.buildDrawingCache(true)
推荐阅读
- angular - 如何串一个相对路径
- ios - 如何判断检测到哪个参考对象?
- php - 如何使用 laravel 框架通过 php 访问数据库?
- php - 我需要一种方法来从这个 php 数组中找到五个俱乐部
- java - MapperRegistry 不知道 Mapper 文件
- python - 用空字典填充的 Python3 列表
- c++ - 如何修复虚幻引擎 4 中的“不允许指向不完整类类型的指针”错误
- bash - 为什么在条件中打印的 null 与文字 null 的处理方式不同?
- android - Android 上的增量机器学习
- graphql - GraphQL:一个接口可以用来统一两个等价属性名称不同的类型吗?