片段中的ImageView onClick效果

时间:2016-07-28 18:32:02

标签: android android-fragments android-imageview

请纠正我错在哪里。我试图在imageview点击上显示一些点击效果,但它正在抛出nullpointer异常。我在这段代码中错在哪里?它在createAllImage()

中抛出空指针异常

片段代码

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" />

1 个答案:

答案 0 :(得分:1)

正如您所提到的,fear.getDrawable()返回null。

所以,我们有两个解决方案..需要测试:

解决方案1 ​​

fear.getDrawable()为空,因为您将图片设置为android:background

我创建此修复程序基于herehere

因此,请按以下方式更改ImageView

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

解决方案2

如果您想将android:background保留在ImageView布局文件中,请尝试按以下方式获取drawable:

fear.getBackgroundDrawable();