无法在运行时更改imageButton上的图像

时间:2011-10-20 11:36:34

标签: android imagebutton

我正在尝试在运行时更新imageButton的图像。我有一个switch语句,用于检查从另一个活动传递的ID。我知道switch语句正在工作,因为正确的ID被传递给TextView。

我一直在搜索并查看一些使用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;

更新

搞定了!我刚从xml布局中的ImageButton中删除了android src,现在工作正常。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

替换此

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

您在xml中使用ImageButton并在Java中将其作为ImageView

答案 1 :(得分:1)

您的代码的逻辑似乎是正确的(除非您的原始代码中有ImageButton ImageButton等有趣的内容)。问题必定在其他地方。

如果从布局中删除android:visibility="gone",您能看到该按钮吗?

顺便说一下,而不是:

setVisibility(0);

使用

setVisibility(View.VISIBLE);

这样它更具可读性。

答案 2 :(得分: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;