显示和隐藏ImageView

时间:2014-09-17 07:01:38

标签: android imageview ontouch

我有一个基于this tutorial的项目,其中用户旋转滚轮,数字int days的值根据滚轮的当前位置而变化,现在我想制作另一个图像{ {1}}根据此数字的值显示或隐藏,但会抛出ImageView circle

这是我的NullPointerException事件,抱歉我的英文不好

onTouch

我的logcat enter image description here

3 个答案:

答案 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);