This question already has answers here:
Android: why can't I call setOnClickListener method on a button outside of an onCreate method?
(7个答案)
3年前关闭。
如果我将setOnClickListener放在onCreate方法之外,则此代码不起作用。我想知道为什么吗?逻辑是正确的。但是我在onCreate()之外的setOnClickListener处出现红色错误
(7个答案)
3年前关闭。
如果我将setOnClickListener放在onCreate方法之外,则此代码不起作用。我想知道为什么吗?逻辑是正确的。但是我在onCreate()之外的setOnClickListener处出现红色错误
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button playbutton = (Button) findViewById(R.id.button1); // has to be in inside onCreate()
playbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"play",Toast.LENGTH_SHORT).show();
}
});
Button pausebutton = (Button) findViewById(R.id.button2); // has to be in inside onCreate()
pausebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"pause",Toast.LENGTH_SHORT).show();
}
});
}
}
最佳答案
因为必须执行setonClickListener才能起作用。因此,如果您放入另一个未调用的函数,它将无法正常工作。您也可以将其放在onStart和onResume中。
另一件事:您不是在编写程序,而是在创建一个特定的类对象,即一个活动,该活动将在应用程序启动时由android实例化。因此,将一些代码放在方法之外是一个错误。
我建议您查看有关activity和lifecycle的文档
关于java - 为什么setOnClickListener()必须在onCreate()内部? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43336253/
10-09 07:10