从此方法的参数获取值并显示它

时间:2012-07-21 18:38:52

标签: java android xml parameters int

我想从方向盘的所有4行获取值,并将值显示在textview或toast中。 我的testwheelvalue(,)方法假设从轮子的表面获取值,并将该值返回到我的方法testpin()。在testpin()将值存储到v1-v4之后,方法updatestatus()应该在文本字段中显示值的总和。

公共类PasswActivity扩展了Activity {

    int testpins;
    int v1 = 0;
    int v2 = 0;
    int v3 = 0;
    int v4 = 0;
    TextView text;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.passw_layout);
        initWheelday(R.id.passw_1);
        initWheelhour(R.id.passw_2);
        initWheelmin(R.id.passw_3);
        initWheelsec(R.id.passw_4);

        updateStatus();
    }

    // Wheel scrolled flag
    private boolean wheelScrolled = false;

    // Wheel scrolled listener
    OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
        public void onScrollingStarted(WheelView wheel) {
            wheelScrolled = true;
        }

        public void onScrollingFinished(WheelView wheel) {
            wheelScrolled = false;
            updateStatus();
        }
    };

    // Wheel changed listener
    private OnWheelChangedListener changedListener = new OnWheelChangedListener() {
        public void onChanged(WheelView wheel, int oldValue, int newValue) {
            if (!wheelScrolled) {
                updateStatus();
            }
        }
    };

    /**
     * Updates entered PIN status
     */
    private void updateStatus() {
        text = (TextView) findViewById(R.id.pwd_status);
        testPin();

        text.setText(String.valueOf(testpins));
        // Toast.makeText(getBaseContext(), testpins,
        // Toast.LENGTH_SHORT).show();
    }

    /**
     * Initializes wheel
     * 
     * @param id
     *            the wheel widget Id
     */
    private void initWheelsec(int id) {
    WheelView wheel = getWheel(id);
    wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 59, "%02d"));
    wheel.setCurrentItem((int) (Math.random() * 10));

    wheel.addChangingListener(changedListener);
    wheel.addScrollingListener(scrolledListener);
    wheel.setCyclic(false);
    wheel.setInterpolator(new AnticipateOvershootInterpolator());
}

private void initWheelmin(int id) {
    WheelView wheel = getWheel(id);
    wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 59, "%02d"));
    wheel.setCurrentItem((int) (Math.random() * 10));

    wheel.addChangingListener(changedListener);
    wheel.addScrollingListener(scrolledListener);
    wheel.setCyclic(false);
    wheel.setInterpolator(new AnticipateOvershootInterpolator());
}

private void initWheelhour(int id) {
    WheelView wheel = getWheel(id);
    wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 23, "%02d"));
    wheel.setCurrentItem((int) (Math.random() * 10));

    wheel.addChangingListener(changedListener);
    wheel.addScrollingListener(scrolledListener);
    wheel.setCyclic(false);
    wheel.setInterpolator(new AnticipateOvershootInterpolator());
}

private void initWheelday(int id) {
    WheelView wheel = getWheel(id);
    wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 5, "%02d"));
    wheel.setCurrentItem((int) (Math.random() * 10));

    wheel.addChangingListener(changedListener);
    wheel.addScrollingListener(scrolledListener);
    wheel.setCyclic(false);
    wheel.setInterpolator(new AnticipateOvershootInterpolator());
}


    /**
     * Returns wheel by Id
     * 
     * @param id
     *            the wheel Id
     * @return the wheel with passed Id
     */
    private WheelView getWheel(int id) {
        return (WheelView) findViewById(id);
    }

    /**
     * Tests entered PIN
     * 
     * @param v1
     * @param v2
     * @param v3
     * @param v4
     * @return true
     */
    private void testPin() {

        v1 testWheelValue(R.id.passw_1, v1);
        v2 testWheelValue(R.id.passw_2, v2);
        v3 testWheelValue(R.id.passw_3, v3);
        v4 testWheelValue(R.id.passw_4, v4);
        testpins = v1 + v2 + v3 + v4;
    }

    /**
     * Tests wheel value
     * 
     * @param id
     *            the wheel Id
     * @param value
     *            the value to test
     * @return true if wheel value is equal to passed value
     */
    private int testWheelValue(int id, int value) {
        int wheel = getWheel(id).getCurrentItem();
        wheel = value;
        text.setText(String.valueOf(testpins));
        return wheel;
    }

}

2 个答案:

答案 0 :(得分:2)

testWheelValue所做的只是比较ID和您的v参数之一的值,然后返回相等。如果您希望某些事件覆盖v参数,则需要告诉程序:

v1 = getWheelValue(R.id.passw_1); // You don't need to pass anything but the ID here
v2 = getWheelValue(R.id.passw_2);
v3 = getWheelValue(R.id.passw_3);
v4 = getWheelValue(R.id.passw_4);

testpins = v1 + v2 + v3 + v4;
updateStatus();

// This method should just use getCurrentItem from the WheelView
private int getWheelValue(int id) {
    return getWheel(id).getCurrentItem();
}

这样,v参数的新值将传递回主代码。

答案 1 :(得分:0)

private void testPin() {

    v1 testWheelValue(R.id.passw_1, v1);
    v2 testWheelValue(R.id.passw_2, v2);
    v3 testWheelValue(R.id.passw_3, v3);
    v4 testWheelValue(R.id.passw_4, v4);

您在上面四行中的每一行都缺少=,但我认为这只是剪切和粘贴错误。

    testpins = v1 + v2 + v3 + v4;

我会做return v1 + v2 + v3 + v4;并摆脱testpins班级成员。

}

/**
 * Tests wheel value
 * 
 * @param id
 *            the wheel Id
 * @param value
 *            the value to test
 * @return true if wheel value is equal to passed value
 */
private int testWheelValue(int id, int value) {
    int wheel = getWheel(id).getCurrentItem();
    wheel = value;

删除该行,因为您正在覆盖正在阅读的值。此外,不需要int value作为参数。

    text.setText(String.valueOf(testpins));

摆脱这一行,updateStatus()在正确的位置做到这一点。 text也是另一个不必要的类成员 - 它应该是updateStatus()的本地成员。

    return wheel;
}