在Android中的片段中设置图像时出现NullPointerException异常

问题描述:

我试图从片段中ImageView中的drawable设置图像。上面的代码在线上抛出NullPointerException在Android中的片段中设置图像时出现NullPointerException异常

imageView.setImageResource(R.drawable.featured_one);

public class FeaturedTwo extends Fragment { 

    ImageView imageView; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.featured_one, container, false); 

     imageView = (ImageView) rootView.findViewById(R.id.featured_two_image); 

     imageView.setImageResource(R.drawable.featured_one); 

     return rootView; 

    } 
} 

请帮我找到一个解决方案。

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference 
                        at com.example.anandzoom.appytizertest.FeaturedTwo.onCreateView(FeaturedTwo.java:28) 
                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189) 
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 

XML featured_one的,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/featured_one_image" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" /> 

</LinearLayout> 
+0

看到我的编辑使用setImageDrawable()喜欢 –

在片段用画面的内容,而不是getActivity()

编辑:并修补您的ImageView ID使用featured_one_image代替featured_one_image的。

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.featured_one, container, false); 
    imageView = (ImageView) rootView.findViewById(R.id.featured_one_image); 

    // set drawable image like it 
    imageView.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.featured_one)); 


    return rootView; 

} 
+0

我仍然在imageView.setImageResource(R.drawable.featured_one); –

+0

@Anand Kumar检查setImageDrawable()方法编辑 –

+0

仍然抛出NullPointerException .... java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.ImageView.setImageDrawable(android.graphics.drawable.Drawable)'on一个空对象引用 –

你需要找到从rootView的ImageView的。

呼叫

imageView = (ImageView) rootView.findViewById(R.id.featured_one_image);

编辑:您rootView内的ImageView的是featured_one_image,不featured_two_image

+0

我仍然获得在imageView.setImageResource(R.drawable.featured_one)相同的异常; –

+0

@AnandKumar调用'imageView =(ImageView)rootView.findViewById(R.id.featured_one_image);' –

使用rootView.findViewById,而不是getActivity因为你的布局片段内部没有活动里面。

你也有错误的id,进入你的xml被命名为“featured_one_image”,但你会得到“featured_two_image”。

所以更改代码 imageView = (ImageView) rootView.findViewById(R.id.featured_two_image);imageView = (ImageView) rootView.findViewById(R.id.featured_one_image);

嘿,你需要找到没有父活动片段中你的看法。

只需更换

imageView = (ImageView) getActivity().findViewById(R.id.featured_one_image); 

imageView = (ImageView) rootView.findViewById(R.id.featured_two_image); 
+0

我仍然在imageView.setImageResource(R.drawable.featured_one); –

+0

可以粘贴xml fie for featured_one –

+0

更新后的答案,现在检查 –

,而不是这样的:

imageView = (ImageView) getActivity().findViewById(R.id.featured_two_image); 

使用本:

imageView = (ImageView) rootView.findViewById(R.id.featured_two_image);