gpt4 book ai didi

java - 为什么 Button 在 OnClick 中初始化,即使它无权访问 OnCreate,但它实际上是在 OnCreate 中初始化的?

转载 作者:太空狗 更新时间:2023-10-29 14:35:20 26 4
gpt4 key购买 nike

我试图更好地理解声明和初始化,但并不真正理解为什么您可以在 OnClick 中更改按钮的文本,即使它无权访问 OnCreate,因为它是另一个函数。

当还在 onCreate 中声明变量时,它不起作用,但只有初始化才起作用。请解释原因。谢谢


package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.Button);
btn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
btn.setText("Sample Text");
}
}

所以我想弄明白为什么您可以更改按钮的文本,即使它尚未在 OnClick 中初始化。非常感谢<3

最佳答案

已经初始化。看到变量 btn 了吗?它在类级别,而不是在函数内部。这意味着变量存储在类的实例中,而不是堆栈中,并且将在对类的同一实例的函数调用之间持续存在。由于 onClick 将在与 onCreate 相同的实例上调用,因此当您在 onCreate 中对其进行初始化时,它将保持初始化状态。因此,当调用 onClick 时,该值已经设置。

关于java - 为什么 Button 在 OnClick 中初始化,即使它无权访问 OnCreate,但它实际上是在 OnCreate 中初始化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com