java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.ImageView.setImageResource (int)



我正在处理折叠视差,在坐标布局中,我有一个id为imageViewTest的元素,它在这个文件中:activity_company_detail.xml

<android.support.design.widget.AppBarLayout
...>
<android.support.design.widget.CollapsingToolbarLayout
...
>
<ImageView
android:id="@+id/imageViewTest"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@android:color/darker_gray"
tools:ignore="ContentDescription"/>
<android.support.v7.widget.Toolbar
.../>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_company_detail"/>

在fragment类中,我试图通过方法view.findViewById(…(调用这个元素R.id.imageViewTest,这个元素在这个fragment的活动中,有必要以编程方式更改它的功能。CompanyDetailActivityFragment.java

private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
....
view = inflater.inflate(R.layout.fragment_company_detail, container, false);
ImageView  imageViewPrueba = (ImageView)view.findViewById(R.id.imageViewTest);
imageViewPrueba.setImageResource(R.mipmap.ic_logo_promo);
...
}

当尝试使用此元素时,我得到以下错误:由以下原因引起:java.lang.NullPointerException:试图在null对象引用`上调用虚拟方法"void android.widget.ImageView.setImageResource(int(">

尝试使用getActivity.findViewById((,但我仍然处于问题中

对不起我的英语。

谢谢你的帮助@Kiryl Tkach。

已解决

在活动中:CompanyDetailActivity.java

public void setImageDrawable(){
ImageView  imageViewPrueba = (ImageView) findViewById(R.id.imageViewPrueba);
imageViewPrueba.setImageDrawable(...));
}

在片段中:CompanyDetailActivityFragment.java

@Override
public View onCreateView(){
...
((CompanyDetailActivity)getActivity()).setImageDrawable();
...
}

您不能这样做,因为它不在您的碎片布局中。看看你的方法:view.findViewById(R.id.imageViewPrueba);。您正在视图对象中查看它,该对象具有布局@layout/content_company_detail,但它对其活动一无所知。您所需要做的就是在活动setImageResource中创建方法,并从片段中调用它。请记住,您的片段只应操作自己的视图,而使用其他视图操作的最佳实践是调用其他活动和片段的方法。

相关内容

最新更新