2016-07-28 99 views
0

請糾正我錯在哪裏。我試圖在imageview點擊上顯示點擊效果,但它拋出了空指針異常。在這個代碼中我錯了?它是在createAllImage拋出空指針異常()ImageView onClick影響片段

片段代碼

public class DuaFragment extends Fragment implements View.OnTouchListener { 

    ImageView fear; 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view= inflater.inflate(R.layout.dua_fragment,container,false); 
     return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     createAllImage(); 
    } 

    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     switch (motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       fear.getDrawable().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP); 
       fear.invalidate(); 
       break; 
      case MotionEvent.ACTION_UP: 
       fear.getDrawable().clearColorFilter(); 
       fear.invalidate(); 
       break; 
     } 
     return true; 
    } 

    void createAllImage() { 
     fear=(ImageView)getView().findViewById(R.id.fear); 
     fear.setOnTouchListener(this); 
    } 
} 

我的佈局文件

<ImageView 
    android:id="@+id/fear" 
    style="@style/icon" 
    android:background="@drawable/fear_96" /> 
+0

也許,fear.getDrawable()將返回null或恐懼是空..分享堆棧跟蹤(logcat的),以獲得更多的幫助 – W0rmH0le

+0

fear.getDrawable()被扔空指針,所以我把它改爲setColorFilter(0x77000000 , PorterDuff.Mode.SRC_ATOP); 。現在它不顯示任何異常,但沒有點擊效果 – FaisalAhmed

+0

您的ImageView有任何圖像? – W0rmH0le

回答

1

至於你提到的fear.getDrawable()被返回null。

所以,我們有兩個解決方案。需要進行測試:

解決方案1 ​​

fear.getDrawable()爲null,因爲你設置的圖片作爲android:background

我創造了這個固定的總部設在herehere

所以,如下更改ImageView

<ImageView 
    android:id="@+id/fear" 
    style="@style/icon" 
    android:src="@drawable/fear_96" 
    android:scaleType="fitXY"  /> 

解決方案2

如果你想保持android:background中的ImageView佈局文件,嘗試獲取可繪製如下:

fear.getBackgroundDrawable(); 
+0

解決方案2正在工作....你能告訴我爲什麼我必須做fear.invalidate(); – FaisalAhmed

+1

無效迫使視圖重新繪製自己。發生這種情況是因爲View並不知道您更改了drawable。這就是爲什麼你必須「強制」 – W0rmH0le

+0

解決方案之一也工作正常。非常感謝@Guilherme。你可以做一個忙,我沒有理解色碼0x77000000。什麼是橙色代碼 – FaisalAhmed

相關問題