在onClick事件中更改ImageView图像

时间:2012-01-22 16:23:20

标签: android

我的程序中有一个ImageView作为按钮。我需要它成为一个ImageView,因为我只想显示图像,而不是边框​​。

这个按钮是一盏灯,如果数据库中的数据显示它是可见的,灯必须“打开”,当你点击按钮时,它会检查来自银行的数据并将其更改为“关闭”(如果它已打开)反之亦然。

因此,图像的更改将在onClick事件中发生。

这是我的代码:

btnVisualizar.setClickable(true); 
btnVisualizar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            if (visivelBanco.getText().equals("Y")) {
                btnVisualizar.setImageResource(this.getResources().getIdentifier(
                    "drawable/visible_off", null, this.getPackageName()));
            } else {
                btnVisualizar.setImageResource(
                    this.getResources().getIdentifier("drawable/visible_on", null, this.getPackageName()));
            }
        } catch (Exception e) {
            Toast.makeText(
                getBaseContext(), 
                "Falha ao modificar visibilidade do item!", 
                Toast.LENGTH_SHORT).show();
        }
    }
});

但编译器无法识别方法getResources()和getPackageName()。

我做错了什么?

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

其中的this是指onClickListener

使用[Activity] .this而不是this,其中[Activity]是Activity的名称

答案 1 :(得分:0)

String uri = "drawable/visible_off"
btnVisualizar.setImageResource(EdicaoActivity.this.getResources().getIdentifier(uri, "drawable", EdicaoActivity.this.getPackageName()));

答案 2 :(得分:0)

我认为您只需要使用R类来获取drawable的标识符。例如:

btnVisualizar.setImageResource(R.drawable.visible_on);

你不应该惹恼getResources()