将第一个活动的号码传递给号码选择器

时间:2015-12-04 10:00:59

标签: java android android-intent android-number-picker

这是我的第一个活动

public void onClick(View v) {
        switch (v.getId()) {

            case R.id.setButton:

                int cpv= carbPValue;
                int ppv = proteinPValue;
                int fpv=fatPValue;

                Intent intent = new Intent ( this, AdjustMacronutrients.class );
                intent.putExtra ( "carbP", cpv );
                intent.putExtra ( "proteinP", ppv );
                intent.putExtra ( "fatP", fpv );

                startActivity(intent);
                finish();
        }
    }

这是我的第二项活动:

我从第一个活动传递了3个整数值,即cpvppvfpv

如何在用户选择号码之前将数字选择器中的值设置为默认值。并在用户从每个3个不同的数字选择器中选择后显示TextView中的数字,最后将整数值传回第1个活动。

Bundle extras = getIntent().getExtras();

            cpv=extras.getInt("carbP");
            ppv=extras.getInt("proteinP");
            fpv=  extras.getInt("fatP");

 NumberPicker.OnValueChangeListener onValueChanged = new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                NumberPicker[] nps = new NumberPicker[3];
                nps[0] = (NumberPicker) findViewById(R.id.carbPercentage);
                nps[1] = (NumberPicker) findViewById(R.id.proteinPercentage);
                nps[2] = (NumberPicker) findViewById(R.id.fatPercentage);

                int sum = 0;

                for (int i = 0; i < 3; i++) {
                    String[] values = nps[i].getDisplayedValues();
                    sum += Integer.parseInt(values[nps[i].getValue()]);

                }
                TextView tv = (TextView) findViewById(R.id.totalPercentage);
                tv.setText(String.valueOf(sum)+" %");
            }
        };

        NumberPicker[] nps = new NumberPicker[3];
        nps[0] = (NumberPicker) findViewById(R.id.carbPercentage);
        nps[1] = (NumberPicker) findViewById(R.id.proteinPercentage);
        nps[2] = (NumberPicker) findViewById(R.id.fatPercentage);

        String[] values = new String[21];
        for (int i = 0; i < values.length; i++) {
            values[i] = Integer.toString(i * 5);
        }

        for (int i = 0; i < 3; i++) {
            nps[i].setMaxValue(values.length - 1);
            nps[i].setMinValue(0);
            nps[i].setDisplayedValues(values);
            nps[i].setOnValueChangedListener(onValueChanged);
        }

1 个答案:

答案 0 :(得分:0)

您可以使用:

例如:

nps[0].setValue(cpv);
nps[1].setValue(ppv);
nps[2].setValue(fpv);

例如:

tv.setText(String.valueOf(nps[0].getValue())); // or just tv.setText(""+nps[0].getValue());