@AleAleA

Актуальная замена изображения?

Задача: программно поменять изображение.

Перепробовал множество вариантов с заменой изображения, которое есть в макете, на то, которое есть в drawable.
Также пробовал в макет добавлять изображение, которое должно заменить изображение из этого же макета. Результата это не принесло.

Один из вариантов:
ImageView img= (ImageView) findViewById(R.id.image);
img.setImageResource(R.drawable.my_image);


Ошибка:
Attempt to invoke virtual method 'android.view.View android.widget.ImageView.findViewById(int)' on a null object reference

ИЛИ (в зависимости от варианта)
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageDrawable(android.graphics.drawable.Drawable)'


SecondLayout.xml:
<ImageView
    android:id="@+id/cafe"
    android:layout_width="100dp"
    android:layout_height="90dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_gravity="right"
    android:src="@drawable/cafe" />

<ImageView
    android:id="@+id/baron"
    android:layout_width="100dp"
    android:layout_height="90dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_gravity="right"
    android:src="@drawable/bar" />


Основной class имеет OneLayout.xml

ExampleBottomSheetDialog.class имеет SecondLayout.xml

В основном class'e, когда вы нажимаете на маркер, активируется ExampleBottomSheetDialog.class:
public boolean onMarkerClick(final Marker marker) {

ExampleBottomSheetDialog bottomSheet = new ExampleBottomSheetDialog();
bottomSheet.show(getSupportFragmentManager(), "exampleBottomSheet");

// Image replacement
if (...) {
    ImageView img= (ImageView) findViewById(R.id.cafe);
    img.setImageResource(R.drawable.bar);
}


ExampleBottomSheetDialog.class:
public class ExampleBottomSheetDialog extends BottomSheetDialogFragment {
private BottomSheetListener mListener;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.bottom_sheet_layout, container, false);

    Button button1 = v.findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dismiss();
        }
    });

    return v;
}

public interface BottomSheetListener {
    void onButtonClicked(String text);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);

    try {
        mListener = (BottomSheetListener) context;
    } catch (ClassCastException e) {
        throw new ClassCastException(context.toString()
                + " must implement BottomSheetListener");
    }
}
}


Необходимо поменять изображение cafe на bar.

Какое есть актуальное решение данной проблемы?
  • Вопрос задан
  • 904 просмотра
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Отношения к установке изображения вопрос не имеет. Ты пытаешься найти вьюху там, где её нет. Проверь, что в соответствующем лэйаут-файле есть вью с таким айди.
Ответ написан
@klim76
android/java/sql
Какое есть актуальное решение данной проблемы?

Поближе познакомиться с logcat-ом. Он вас всё рассказал
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы