ContextCompat.getDrawable( ) 的上下文参数应该是什么?

What should be the context parameter for ContextCompat.getDrawable( )?

我在 setOnClickListeneraccording 中使用了另一个 post here

像这样:

  start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                start.setBackground(ContextCompat.getDrawable( this,R.drawable.buttonstop)); 

参数这是错误的 谢谢

您可以使用 v.getContext() 获取与 View 关联的 Context

如果您在 class 中名为 MainActivity,您可以使用:

在 Kotlin 中:

this@MainActivity

例如

button.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View?) {
        Toast.makeText(this@MainActivity, "Hello!", Toast.LENGTH_SHORT).show();
    }
})

// Or in shorter way:
frame_layout.setOnClickListener {
    Toast.makeText(this@MainActivity, "Hello!", Toast.LENGTH_SHORT).show();
}

在Java中:

MainActivity.this

例如

Button button = findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(A.this, "Hello!", Toast.LENGTH_SHORT).show();
    }
});

// Or in shorter way:
button.setOnClickListener(v -> Toast.makeText(MainActivity.this, "Hello!", Toast.LENGTH_SHORT).show());

使用

this

在 onclicklistener 中将引用您应该使用的侦听器

MainActivity.this or getActivity()