我有一个基于this tutorial的项目,其中用户旋转滚轮,数字int days
的值根据滚轮的当前位置而变化,现在我想制作另一个图像{ {1}}根据此数字的值显示或隐藏,但会抛出ImageView circle
这是我的NullPointerException
事件,抱歉我的英文不好
onTouch
我的logcat
答案 0 :(得分:5)
您需要初始化circle
视图,最有可能使用findViewById()
方法
答案 1 :(得分:4)
在第194行切换案例之前尝试这样的事情:
ImageView circle = (ImageView) view.findViewById(R.id.your_iamgeview);
以下是您的全部代码:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// reset the touched quadrants
for (int i = 0; i < quadrantTouched.length; i++) {
quadrantTouched[i] = false;
}
allowRotating = false;
startAngle = getAngle(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
double currentAngle = getAngle(event.getX(), event.getY());
rotateDialer((float) (startAngle - currentAngle));
startAngle = currentAngle;
days = ((int) currentAngle / 12) + 1;
String test = Integer.toString(days);
tvnumber.setText(test);
ImageView circle = (ImageView) v.findViewById(R.id.your_iamgeview); //<-- Add this
switch (days) {
case 1:
circle.setVisibility(View.INVISIBLE);
break;
case 3:
circle.setVisibility(View.VISIBLE);
break;
}
break;
case MotionEvent.ACTION_UP:
allowRotating = false;
break;
}
}
答案 2 :(得分:3)
你定义了这样的圆圈吗?
ImageView circle = (ImageView) findViewById(R.id.xxx);