2012-01-22 119 views
1

我有一個ImageView在我的程序中用作按鈕。我需要它是一個ImageView,因爲我只想顯示圖像,而不是邊界。在onClick事件中更改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()。

我在做什麼錯?

任何幫助的讚賞。

回答

0

那裏的this指的是onClickListener

使用[活動]。這不是這一點,其中[活動]爲活動的名稱

+0

你好Vikram ....謝謝你的幫助。那麼......這確實有助於編譯代碼,但即便如此,代碼並沒有改變圖像。這可能會改變OnClick事件中btnVisualizar的圖像。這裏是我的修改代碼感謝您的幫助:btnVisualizar.setImageResource(EdicaoActivity.this.getResources()。getIdentifier(「drawable/visible_off」,null,EdicaoActivity.this.getPackageName())); –

0

嘗試

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

你好Intathep,謝謝你的幫助。那麼...我試過這個,甚至如此,圖像不會改變。當我關閉並打開活動時,它會發生變化。有什麼像刷新? –

+0

call onCreate(); – Intathep

0

我想你只需要使用R類來獲得標識你的drawable。例如:

btnVisualizar.setImageResource(R.drawable.visible_on); 

你不應該去與getResources()搞亂。

+0

謝謝tomtheguvnor。你的代碼也可以編譯。但即使如此,它不會改變ImageView中的圖像......我通過debuger看到它正在進入內部,它也將數據庫中的數據更改爲可見/不可見。但不幸的是,它不會馬上改變圖像,因爲它應該。 =(其他人?任何幫助都被讚賞! –

+0

你的OnClickListener()被調用嗎?另外,在切換圖像後,嘗試在ImageView上調用'invalidate()',看看是否有幫助。 – tomtheguvnor

+0

Hello tomtheguvnor ...嗯... OnClick事件被調用,它進入了方法,反正它不會改變圖片,所以我嘗試了一些不同的東西,我做了一個全新的項目,只有一個圖像和上面的代碼。現在它運行完美!唯一的區別是我的代碼更新了數據庫中按鈕的可見性,還創建了幾個按鈕(btnVisualizar)。可能發生什麼?Android中的奇怪錯誤!= P –