如何解决空对象的问题?

时间:2018-06-22 14:34:15

标签: java android nullpointerexception

错误:

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" />

第一堂课有OneLayout.xml

ExampleBottomSheetDialog.class具有SecondLayout.xml

在第一个类中,当您单击标记时,将激活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);
    }

如何解决空对象问题?

1 个答案:

答案 0 :(得分:2)

您尝试访问ImageView中的ExampleBottomSheetDialog,但未创建视图(因此ImageView为空)。 您必须为ExampleBottomSheetDialog提供参数,并在ExampleBottomSheetDialog类中管理可绘制的ImageView资源(例如,在onCreateDialog方法中)。