Fragment中的ImageView onClick效果
ImageView onClick effect in fragment
不对的地方请指正。我试图在 imageview click 上显示一些点击效果,但它抛出 nullpointer exception。我在这段代码中哪里错了?它在 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" />
如您所述,fear.getDrawable()
返回 null。
所以,我们有两个解决方案..需要测试:
解决方案 1
fear.getDrawable()
为空,因为你设置图片为 android:background
.
我根据 here and
创建了这个修复程序
因此,按如下方式更改您的 ImageView
:
<ImageView
android:id="@+id/fear"
style="@style/icon"
android:src="@drawable/fear_96"
android:scaleType="fitXY" />
解决方案 2
如果你想在 ImageView 布局文件中保留 android:background
,请尝试按如下方式获取 drawable:
fear.getBackgroundDrawable();
不对的地方请指正。我试图在 imageview click 上显示一些点击效果,但它抛出 nullpointer exception。我在这段代码中哪里错了?它在 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" />
如您所述,fear.getDrawable()
返回 null。
所以,我们有两个解决方案..需要测试:
解决方案 1
fear.getDrawable()
为空,因为你设置图片为 android:background
.
我根据 here and
因此,按如下方式更改您的 ImageView
:
<ImageView
android:id="@+id/fear"
style="@style/icon"
android:src="@drawable/fear_96"
android:scaleType="fitXY" />
解决方案 2
如果你想在 ImageView 布局文件中保留 android:background
,请尝试按如下方式获取 drawable:
fear.getBackgroundDrawable();