Как правильно использовать оператор if для проверки на ноль - PullRequest
0 голосов
/ 13 мая 2018

После попытки создать CardView программно, NullPointerException, но я использовал оператор if, и предупреждение исчезло, но я не уверен, что нужно вводить в else часть оператора if.

Вызов метода «inflate» может привести к возникновению java.lang.NullPointerException

Java

//start of CardView
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(LAYOUT_INFLATER_SERVICE);
if(inflater1 != null) {
View inflatedCardviewLayout = inflater.inflate(R.layout.my_cardview,  new RelativeLayout(getContext()), false);
inflatedCardviewLayout.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.green));

TextView cv_tv1a = inflatedCardviewLayout.findViewById(R.id.cardview_titleA);
cv_tv1a.setText(getString(R.string.titleA));

ImageView imgPictogram = inflatedCardviewLayout.findViewById(R.id.image_pictogram);
imgPictogram.setImageResource(R.drawable.ic_pictogram);

TextView cv_tv1b = inflatedCardviewLayout.findViewById(R.id.cardview_titleB);
cv_tv1b.setText(getString(R.string.titleB));
} else {
    //do something else
}
//end of CardView

XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/tools"
    android:id="@+id/my_cardview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/cardview_titleA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <ImageView
            android:id="@+id/image_pictogram"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/cardview_titleB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

</android.support.v7.widget.CardView>

1 Ответ

0 голосов
/ 13 мая 2018

Вы должны исправить NullPointerException, поскольку получение кода является обязательным использованием вашего кода.Я имею в виду исправление, используя LayoutInflator.from(parent context) вместо того, чтобы запрашивать его у системы.

Вы должны создать класс, чтобы расширить CardView, а затем использовать контекст, когда вы создаете объект просмотра, чтобы получить инфлятор.Также обязательно объедините CardView с раздутым макетом!

...