2017-02-20 77 views
-1

我試圖從片段中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()喜歡 –

回答

1

在片段用畫面的內容,而不是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一個空對象引用 –

0

你需要找到從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);' –

2

使用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);

1

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

只需更換

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

更新後的答案,現在檢查 –

0

,而不是這樣的:

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

使用本:

imageView = (ImageView) rootView.findViewById(R.id.featured_two_image); 
相關問題