未捕获微调器值

时间:2016-07-07 10:01:09

标签: java android

如果您不确定,请不要将此标记为重复

我有三个旋转器和一个按钮。单击按钮时,程序根据三个微调器的值进行计算。然后这个值传递另外两个活动,它显示在editText中。这是我的代码:

主要

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        capturarTexto();
    }


    private void capturarTexto() {
        Button button_calc = (Button) findViewById(R.id.button_calc);
        button_calc.setOnClickListener(get_edit_view_button_listener);
    }

    private Button.OnClickListener get_edit_view_button_listener = new Button.OnClickListener() {
        public void onClick(View v) {
            EditText edit_text = (EditText) findViewById(R.id.textBox1);
            String edit_text_value = edit_text.getText().toString();
            StringTokenizer st = new StringTokenizer(edit_text_value);
            int num_words = st.countTokens();
            Spinner espec = (Spinner) findViewById(R.id.espec);
            String espec_value = espec.getSelectedItem().toString();
            Spinner lengor = (Spinner) findViewById(R.id.lista_origen);
            String lengor_value = lengor.getSelectedItem().toString();
            Spinner lengdest = (Spinner) findViewById(R.id.lista_destino);
            String lengdest_value = lengdest.getSelectedItem().toString();
            double precio = 0;
            if(espec_value .equals("Medicina")){
            if (lengor_value .equals("ES") && lengdest_value .equals("EN")){
                precio = num_words * 0.12;
            }
            if (lengor_value .equals("ES") && lengdest_value .equals("FR")){
                precio = num_words * 0.12;
            }
            if (lengor_value .equals("ES") && lengdest_value .equals("DE")){
                precio = num_words * 0.12;
            }
            Intent intent = new Intent(Main2Activity.this, Main3Activity.class);
            intent.putExtra("precio",precio);
            startActivity(intent);
        }
    };

}

MAIN2

public class Main3Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        Intent intent=getIntent();
        int precio =(int) intent.getExtras().getInt("precio");
        TextView txtCambio = (TextView) findViewById(R.id.textView4);
        txtCambio.setText("Precio Total: "+ precio + " €");
    }

测试之后,在这行代码中传递的值:

intent.putExtra("precio",precio) 

总是0.但如果我把它更改为:

intent.putExtra("precio",num_words)

它正确传递了总字数。这让我觉得脚本没有进入第一个if(espec_value .equals("Medicina"))然后,它没有进行任何计算。

有没有人知道如何解决这个问题?

感谢您的时间

1 个答案:

答案 0 :(得分:0)

您正在发送Double值并访问Integer值。 更改Main3Activity中的行。

double precio = intent.getExtras().getDouble("precio");

如果要将double值解析为int,则再添加一行

int p = (int) precio;