Возникли проблемы при смене изображения на imageButton во время выполнения - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь обновить изображение кнопки image во время выполнения.У меня есть оператор switch, который проверяет идентификатор, переданный из другого действия.Я знаю, что оператор switch работает, поскольку правильный идентификатор передается в 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;

ОБНОВЛЕНИЕ

Получил работу!Я только что удалил Android Src из ImageButton в формате XML, и теперь он работает нормально.Спасибо за помощь!

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

замените это

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

Вы используете ImageButton в XML и получаете его как ImageView в Java

1 голос
/ 20 октября 2011

Логика вашего кода кажется правильной (если в вашем исходном коде нет таких забавных вещей, как ImageButton ImageButton).Проблема должна быть в другом месте.

Можно ли увидеть кнопку, если вы удалите android:visibility="gone" из макета?

Кстати вместо:

setVisibility(0);

используйте

setVisibility(View.VISIBLE);

Таким образом, он более читабелен.

0 голосов
/ 20 октября 2011

не позволит использовать базовые функции, подобные этой 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;
...