- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图更好地理解声明和初始化,但并不真正理解为什么您可以在 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/
我遇到过这个 html: 上面的html和这个有什么区别: 最佳答案 来自MDN page on the tag : 对于 type 的属性标签,可能的值是: 提交:按钮将表单数据提交给服务器
Button button= (Button) findViewbyID(R.id.button); 和 Button button = new Button(this); 有什么区别? 最佳答案 有
我是一名优秀的程序员,十分优秀!