Задача: программно поменять изображение.
Перепробовал множество вариантов с заменой изображения, которое есть в макете, на то, которое есть в 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.
Какое есть актуальное решение данной проблемы?