我在查找为什么此行引发NullPointerException异常时遇到了麻烦:
ImageView imageView1 = (ImageView) rootView.findViewById(R.id.imageView1);
这一切都发生在一个片段中
这是片段:
public static class MyFragment extends Fragment {
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_layout,
container, false);
return rootView;
}
public void setImage(Uri imageUri) {
ImageView imageView1 = (ImageView) rootView.findViewById(R.id.imageView1);
imageView1.setImageURI(imageUri);
}
}
这是片段布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>
</RelativeLayout>
从片段外部调用setImage()方法。
最佳答案
因此,看来您的rootView
是null
;
您确定要在已调用setImage()
的片段实例上调用onCreateView
吗?您可以通过在两个方法中都添加println
并检查控制台/ LogCat的顺序来进行测试。
您可以将代码张贴在调用setImage()
的位置。
如果确实是问题所在,那就有几种解决方案,其中一些比其他的要好。对于初学者,您可以尝试将rootView
或imageView1
传递给调用setImage()
的活动,然后将setImage()
移至该活动。不是最佳做法,但请尝试一下,看看是否可行。
(本来可以发表评论,但是我没有足够的声誉。请发表评论,然后我将根据您的评论尝试编辑答案。)