【发布时间】:2021-06-13 09:07:06
【问题描述】:
我对声明感到困惑。在第一个代码中,我在 onCreate 函数中声明了 views,而在第二个代码中,我在 onCreate 之外声明了 功能。第一个代码运行良好,而第二个代码不工作。我不知道哪一个是正确的。在我的其他一些项目中,我已经在 onCreate 函数之外声明了但没有任何问题。但是为什么会有问题。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//This declaration
TextView imgNum=findViewById(R.id.textView);
ImageView frame = findViewById(R.id.imageView);
ImageView left= findViewById(R.id.imageView2);
ImageView right=findViewById(R.id.imageView3);
left.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count--;
if (count<0){
count+=9;
}
}
但这不起作用。我所做的唯一更改是将所有声明放在 onCreate 函数之外。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int count=0;
//this declaration
TextView imgNum=findViewById(R.id.textView);
ImageView frame = findViewById(R.id.imageView);
ImageView left= findViewById(R.id.imageView2);
ImageView right=findViewById(R.id.imageView3);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
left.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count--;
if (count<0){
count+=9;
}
请帮帮我
【问题讨论】:
-
我的猜测是视图还没有被加载,因此它们没有被初始化。不过,我不是 100% 确定。您是否尝试过
System.out.println(imgNum + " | " + frame + " | " + left + " | " + right);之类的方法来查看它们有哪些值(如果它们为空或不为空)?
标签: java android view declaration findviewbyid