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处出现红色错误

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实例化。因此,将一些代码放在方法之外是一个错误。
我建议您查看有关activitylifecycle的文档

关于java - 为什么setOnClickListener()必须在onCreate()内部? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43336253/

10-09 07:10