如果我将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();
}
});
}
}
答案 0 :(得分:2)
因为必须执行setonClickListener才能工作。因此,如果您输入另一个未调用的函数,它将无法工作。你也可以把它放在onStart和onResume上。
另一件事:你没有编写程序,而是创建一个特定的类对象,一个活动,当你的应用程序启动时,它将由android实例化。因此,将一些代码放在方法之外是一个错误。 我建议您查看有关activity和lifecycle
的文档答案 1 :(得分:0)
<强>的onCreate():强>
首次创建活动时调用。这是您应该执行所有常规静态设置的地方:创建视图,将数据绑定到列表等。此方法还为您提供包含活动先前冻结状态的Bundle(如果有)。始终紧跟onStart()。
将代码置于此处之外它没有意义,为什么?
因为您的代码永远不会被执行,所以在活动启动时只执行onCreate和onResume中的代码。
答案 2 :(得分:-1)
因为您必须通过引用创建按钮,然后设置onclick侦听器。