-1

ホイールの4行すべてから値を取得し、その値をテキストビューまたはトーストに表示したいと思います。私の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;
    }

}
4

2 に答える 2

2

testWheelValueIDの値とパラメータの1つを比較して、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メインコードに戻されます。

于 2012-07-21T18:44:39.513 に答える
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);

上記の4行のそれぞれにが欠けてい=ますが、これは単なるカットアンドペーストエラーであると思います。

    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また、もう1つの不要なクラスメンバーです。ローカルである必要がありますupdateStatus()

    return wheel;
}
于 2012-07-27T03:46:07.033 に答える