Android findViewByID在虚拟或正常使用时不起作用

Android findViewByID在虚拟或正常使用时不起作用,android,android-studio,kotlin,compiler-errors,runtime-error,Android,Android Studio,Kotlin,Compiler Errors,Runtime Error,我创建了一个类(不是MainActivity),它需要写入activity_main.xml UI中的元素 所述元素声明如下: <ImageView android:id="@+id/beatBarRenderView" android:layout_width="match_parent" android:layout_height="match_parent"/> beatBarRenderVi

我创建了一个类(不是MainActivity),它需要写入activity_main.xml UI中的元素

所述元素声明如下:

<ImageView
    android:id="@+id/beatBarRenderView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
beatBarRenderView.background = BitmapDrawable(resources, bitmap)
override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    beatBarRenderView = findViewByID(R.id.beatBarRenderView)
}
位图在此行之前已正确声明

代码似乎能够找到BeatDerView,因为我在编译期间没有收到任何错误。但是,在运行时,程序崩溃,我得到以下错误:

尝试在空对象引用上调用虚拟方法“android.view.view android.view.Window.findViewById(int)”

因此,我尝试通过执行以下操作,在此类中手动声明BeatBatterView:

<ImageView
    android:id="@+id/beatBarRenderView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
beatBarRenderView.background = BitmapDrawable(resources, bitmap)
override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    beatBarRenderView = findViewByID(R.id.beatBarRenderView)
}
现在我得到一个编译错误:

未解析的引用:findViewByID


请记住,我在这个网站上读到过类似的问题。我已经在build.gradle中添加了kotlin android扩展。我想我导入了正确的库(Android Studio不建议编译错误,它只是告诉我创建一个抽象类)。这在MainActivity中起作用,只有在我将其移动到另一个类文件时才会中断。

findviewbyd
更改为
findviewbyd

如果不是,则为此类类型添加
作为

lateinit var mTextHello: TextView

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

    mTextHello = findViewById(R.id.ui_text_hello) as TextView
    mTextHello.text = "Kotlin Example"

}

谢谢你的回复。将大写字母D改为小写字母D确实让我能够正常使用该函数,而且我还添加了“as ImageView”作为衡量标准(它是一个ImageView,而不是TextView)。现在,我在运行时(崩溃)时遇到了这个错误:“lateinit属性BeatBarnerView尚未初始化”。我开始怀疑我是否完全误解了onCreate的功能…lateinit使初始化延迟。检查一下这部分,你能解释一下吗?你这是什么意思?我应该用类的其余局部变量初始化它吗?如果你使用
lateinit
,你就有了
var
变量。所以它应该初始化。检查文档。看起来您可能将布局与运行时
视图
对象混为一谈,而Kotlin合成图只会增加更多的混乱。布局只是蓝图。从一个
活动
中的版面创建的
视图
与从同一版面创建的另一个
活动
中的
视图
没有关系。如果要从其他类修改
MainActivity
中的
视图,则需要将
MainActivity
视图直接传递给它。另外,您的第二个类似乎正在扩展某些
活动
类,而您似乎正在自己实例化它。您无法自己创建
活动
类的实例,并让它们正常工作,这可能就是您获得
窗口的原因。findViewById(int)
异常。