在 kotlin Android Studio 中声明 ImageView

Declare ImageView in kotlin Android Studio

我想要的是这样做(在Java中):

public class MainActivity exteds AppCompatActivity{
    ImageView logo;

    @override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        logo = findViewById(R.id.logo);
    }

将它带到 Kotlin 时出现错误:

请问要保留哪些选项才不会出现错误?

什么 class 是 TODO()

使用 lateinit,稍后您可以初始化 属性。

lateinit var logo: ImageView

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    logo = findViewById(R.id.logo)
}

如果你想在 kotlin 中使用这个 logo = findViewById(R.id.logo); 那么你不需要声明任何额外的变量你可以简单地使用 logo.setOnClickListener { } 或任何类似的 kotlin 将直接从你的 xml.(注意:- 这里 logo 是您的 imageView id)。

尽管如此,如果您想声明任何变量并稍后对其进行初始化,那么您可以使用 lateinit var logo: ImageView 或简单且可为空的变量,如 var logo: ImageView? = null 并在稍后对其进行初始化。 在 google 上有很多博客和 S.O 问题,您可以在其中找到有关 lateinitnullable 变量的更多信息。 是您可以参考的 S.O 问题之一。

您可以初始化为null,稍后使用

var logo: ImageView? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.simple_layout)
        logo = findViewById(R.id.imageView)
    }

你不能重新分配一个 val,所以我建议你把它变成一个 var。由于您还想稍后对其进行初始化,因此您需要声明一个 lateinit var,即 lateinit var logo: ImageView 或者您可以将其初始化为 null,即 var logo: ImageView? = null 然后稍后您可以重新分配为 initented logo = findViewById(R.id.logo)