2011-10-20 57 views
1

我試圖在運行時更新imageButton的圖像。我有一個switch語句,用於檢查從另一個活動傳遞的ID。我知道switch語句正在工作,因爲正確的ID被傳遞給TextView。無法在運行時更改imageButton上的圖像

我一直在尋找和看到一些例子使用ImageView和其他人使用ImageButton。正如你可以看到下面我已經嘗試了兩個都沒有工作。

XML佈局:

<ImageButton android:visibility="gone" android:id="@+id/imageButton" android:src="@drawable/defaultimage" android:layout_width="97dp" android:layout_height="95dp"></ImageButton> 
    <TextView android:visibility="gone" android:text="TextView" android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true"></TextView> 

Java代碼:

case 1:{ 
      // Location 1 
      ImageView ImageButton = (ImageView)findViewById(R.id.imageButton); 
      ImageButton .setImageResource(R.drawable.image1); 
      ImageButton .setVisibility(0); 
      TextView Test = (TextView)findViewById(R.id.textView); 
      Test.setVisibility(0); 
      Test.setText("ID passed is" + id); 
      break; 
      } 
     case 2:{ 
      // Location 2 
      ImageButton ImageButton = (ImageButton)findViewById(R.id.imageButtonGhostCamLocation); 
      ImageButton .setBackgroundResource(R.drawable.image2); 
      ImageButton .setVisibility(0); 

      TextView Test = (TextView)findViewById(R.id.textView); 
      Test.setVisibility(0); 
      Test.setText("ID passed is" + id); 
      break; 

UPDATE

得到它的工作!我剛剛從xml佈局中的ImageButton中刪除了Android src,現在它工作正常。謝謝您的幫助!

+2

首先,您應該檢查Java命名約定(http://java.about.com/od/javasyntax/a/nameconventions.htm)。 'ImageButton ImageButton =(ImageButton)findViewById(..)'沒有任何意義。 – Stephan

+0

它是如何編譯的? – Blackbelt

+0

我在這裏更改了名稱,使其更易於閱讀... ImageButton ImageButton實際上是ImageButton myImageButtonName。對於那個很抱歉。 :-) –

回答

1

你的代碼的邏輯似乎是正確的(除非你有有趣的事情就像ImageButton ImageButton你原始代碼)。問題一定在其他地方。

如果從佈局中刪除android:visibility="gone",您會看到該按鈕嗎?

順便說一句,而不是:

setVisibility(0); 

使用

setVisibility(View.VISIBLE); 

這樣,它更具有可讀性。

+0

感謝您的提示!我正在尋找這個。 :-) –

0

將不允許使用像這個ImageButton這樣的基本功能作爲變量。 使用此代碼

private ImageButton myButton; 

在的onCreate()

myButton = (ImageButton) findViewById(R.id.imageButton); 

並在代碼本myButton的變量。

case 1:{ 
     // Location 1    
     myButton .setImageResource(R.drawable.image1); 
     my .setVisibility(0); 
     TextView Test = (TextView)findViewById(R.id.textView); 
     Test.setVisibility(0); 
     Test.setText("ID passed is" + id); 
     break; 
     } 
    case 2:{ 
     // Location 2   
     myButton.setBackgroundResource(R.drawable.image2); 
     my.setVisibility(0); 
     TextView Test = (TextView)findViewById(R.id.textView); 
     Test.setVisibility(0); 
     Test.setText("ID passed is" + id); 
     break; 
2

您在XML使用ImageButton和Java中

得到它作爲 ImageView替換該

ImageButton imageButton = (ImageButton)findViewById(R.id.imageButton); 
imageButton .setImageResource(R.drawable.image1); 
imageButton .setVisibility(0); 

+1

正如前面提到的,我在這裏包括了兩個來展示我所做的。兩個開關都不能正常工作。如果我使用ImageButton或ImageView(正如我在不同的地方所見過的那樣)。 –

+0

告訴我們如何使用開關 –

相關問題