首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.lang.NullPointerException:尝试对null对象引用调用虚方法“”void android.widget.ImageView.setImageResource (Int)“”

java.lang.NullPointerException:尝试对null对象引用调用虚方法“”void android.widget.ImageView.setImageResource (Int)“”
EN

Stack Overflow用户
提问于 2018-10-28 00:25:05
回答 1查看 1.9K关注 0票数 1

我正在处理折叠视差,在坐标布局中,我有一个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"/>

在片段类中,我试图通过view.findViewById (...)方法调用这个元素R.id.imageViewTest,这个元素是在这个片段的活动中,有必要通过编程来改变它的功能。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:尝试在空对象引用上调用虚方法'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();
...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 00:36:35

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53023975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档