Android:为什么我不能在 onCreate 方法之外的按钮上调用 setOnClickListener 方法?

2024-01-02

这是一个新手问题,但为什么我不能在 onCreate 方法之外的按钮上调用 setOnClickListener 方法?

例如,为什么我不能这样做?或者也许 Eclipse 只是没有在 onCreate 方法之外暗示 setOnClickListener 代码?因为什么都没有显示出来。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}


Button button = (Button) findViewById(R.id.button_send);
   button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
      // Do something in response to button click
  }
});

您可以在任何函数中设置点击监听器。但这不是你的确切问题。 实际问题是

setContentView(R.layout.main_layout);

你可以打电话按Id查找视图之后的功能设置内容视图. 设置内容视图用于设置活动的布局。您的布局包含不同的视图,例如按钮等。因此,如果您不设置布局,则无法使用 findViewById 访问您的视图,如果无法访问,则无法使用它们。

所以正确的顺序是:

1 Set layout on your activity using setContentView.
2 Find id for your view using findViewById.
3 Then use your views for your purposes.

始终首先关注基础知识。

还有一个问题是您在任何函数之外调用 setOnClickListener 。在任何函数静态块之外,只允许函数声明和赋值。下面的声明都不是它们。所以它永远不会执行,回调也永远不会发生。

button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
      // Do something in response to button click
  }

});

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:为什么我不能在 onCreate 方法之外的按钮上调用 setOnClickListener 方法? 的相关文章

随机推荐