java.lang.NullPointerException для android.widget.TextView.setText([дубликат]
java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.TextView.setText(java.lang.CharSequence) для ссылки на нулевой объект для Unified Native Ad от Admob
(По какой-то причине я не могу использовать последнюю версию admob SDK)
Моя версия - 19.5.0
ad_unified.xml
<com.google.android.gms.ads.formats.UnifiedNativeAdView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Advertisements"
android:textSize="16sp"
android:padding="5dp"
android:background="@color/colorAccent"
android:textColor="@android:color/white"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/adunifiedLinearLayout1">
<ImageView
android:src="@android:drawable/ic_delete"
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/adunifiedImageView1"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.0">
<RatingBar
android:id="@+id/ad_stars"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.5"/>
<TextView
android:id="@+id/appinstall_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text"
android:id="@+id/appinstall_body"/>
</LinearLayout>
<TextView
android:id="@+id/appinstall_call_to_action"
android:background="@color/colorAccent"
android:textColor="#FF0078FF"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<com.google.android.gms.ads.formats.MediaView
android:id="@+id/appinstall_media"
android:layout_width="match_parent"
android:layout_height="175dp"
android:layout_below="@id/adunifiedLinearLayout1"/>
</RelativeLayout>
</com.google.android.gms.ads.formats.UnifiedNativeAdView>
В коде Java
private void pupulateNativeAd(final UnifiedNativeAd unifiedNativeAd, UnifiedNativeAdView adView) {
ImageView icon = (ImageView) adView.findViewById(R.id.adunifiedImageView1);
TextView headline = (TextView) adView.findViewById(R.id.appinstall_headline);
TextView body = (TextView) findViewById(R.id.appinstall_body);
TextView callAction = (TextView) adView.findViewById(R.id.appinstall_call_to_action);
MediaView media = (MediaView) adView.findViewById(R.id.appinstall_media);
adView.setIconView(icon);
adView.setHeadlineView(headline);
adView.setBodyView(body);
adView.setCallToActionView(callAction);
adView.setMediaView(media);
icon.setImageDrawable(unifiedNativeAd.getIcon().getDrawable());
headline.setText(unifiedNativeAd.getHeadline());
if(unifiedNativeAd.getBody().isEmpty()){
body.setVisibility(View.GONE);
}else{
body.setText(unifiedNativeAd.getBody());
}
media.setMediaContent(unifiedNativeAd.getMediaContent());
callAction.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View p1) {
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse(unifiedNativeAd.getCallToAction()));
}
});
adView.setNativeAd(unifiedNativeAd);
Все работает нормально, если я прокомментирую как
/*if(unifiedNativeAd.getBody().isEmpty()){
body.setVisibility(View.GONE);
}else{
body.setText(unifiedNativeAd.getBody());
}*/
** Итак, возникло исключение, и я не знаю, как исправить
1 ответ
U пропустил использование adView при инициализации объекта body, поэтому замените это
TextView body = (TextView) findViewById(R.id.appinstall_body);
с участием
TextView body = (TextView) adView.findViewById(R.id.appinstall_body);