我想弄清楚为什么我不能访问setOnClickListener()
方法之外的onCreate()
。
以下代码段放在onCreate()
方法下面。
TextView numbers = (TextView)findViewById(R.id.numbers);
numbers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,NumbersActivity.class);
startActivity(intent);
}
});
我试图将EventListener设置为TextView
,但setOnClickListener
显示为红线。为什么会这样?我的意思是,如果我将代码片段放在onCreate()
方法中,它正在工作。为什么我不能从外面访问setOnClickListener
?
你无法访问其有界区域的视图onCreate()
方法的界限。如果你想要那么你必须通过layout-inflater
来膨胀视图。
因为那些是编程语言规则之一。在方法或函数之外,您可以声明静态块,声明其他函数或进行赋值。 setOnClickListener
是一个接受interface
作为参数的方法,看起来像这样:
public interface OnClickListener {
void onClick(View v);
}
实际上有几个实现。其中一个你在上面用过的例子,第二个是implement View.OnClickListener
界面和覆盖方法onClick(View view)
现在你可以订阅你的视图到这个界面numbers.setOnClickListener(this)
如果你有多个视图订阅你可以通过检查onClick(View view)
来区分它们在id
内喜欢:
public void onClick(View view){
switch(view.getId()){
case R.id.numbers:
break;
}
}
还有一个实现如下:
public OnClickListener onClick = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
现在你可以使用:numbers.setOnClickListener(onClick)