我会尝试减少信息,但是每次您按下单选按钮时,该应用程序都会计算一个分数。有4个带有单选按钮的屏幕,然后第五个屏幕显示您的分数。

但是,计算总会得出数字4。无论按下什么,都根本没有添加。我要去哪里错了?

    RadioButton gpa1 = (RadioButton) findViewById(R.id.GPA1);
    RadioButton gpa2 = (RadioButton) findViewById(R.id.GPA2);
    RadioButton gpa3 = (RadioButton) findViewById(R.id.GPA3);
    RadioButton gpa4 = (RadioButton) findViewById(R.id.GPA4);

    //Calculation based on GPA question
    if (gpa1.isChecked()){calculation = calculation + 1;}
    else{ if (gpa2.isChecked()) {calculation = calculation + 2; }
    else{ if (gpa3.isChecked()) {calculation = calculation + 3; }
    else{ if (gpa4.isChecked()) {calculation = calculation + 4; }
    else{calculation = 0.0; }}}}


这是第一个主要班级,在他们选择答案并按下一步按钮后,它将转到第二页,其中包含另一个问题和另外4个也应添加到计算变量中的答案。

这是更多的代码来显示完整介绍的内容:

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    //RESTORES SAVED STATES
    if (savedInstanceState == null ){calculation = 0.0;}
    else{calculation = savedInstanceState.getDouble(CALCULATION);}

    addListenerOnButton();

    RadioButton gpa1 = (RadioButton) findViewById(R.id.GPA1);
    RadioButton gpa2 = (RadioButton) findViewById(R.id.GPA2);
    RadioButton gpa3 = (RadioButton) findViewById(R.id.GPA3);
    RadioButton gpa4 = (RadioButton) findViewById(R.id.GPA4);

    //Calculation based on GPA question
    if (gpa1.isChecked()){calculation = calculation + 1;}
    else{ if (gpa2.isChecked()) {calculation = calculation + 2; }
    else{ if (gpa3.isChecked()) {calculation = calculation + 3; }
    else{ if (gpa4.isChecked()) {calculation = calculation + 4; }
    else{calculation = 0.0; }}}}

    //Get button to do button stuff like go to the next page
    Button butGPA = (Button) findViewById(R.id.butGPA);
    butGPA.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            Intent i = new Intent(Main.this, Main2.class);
            startActivity(i);
        }
    });


    }

最佳答案

由于您的if语句位于onCreate()中,因此该值始终将是RadioButton,默认情况下会选中该值,这显然是第一个,因此为什么总是获得4。移动

 if (gpa1.isChecked()){calculation = calculation + 1;}
else{ if (gpa2.isChecked()) {calculation = calculation + 2; }
else{ if (gpa3.isChecked()) {calculation = calculation + 3; }
else{ if (gpa4.isChecked()) {calculation = calculation + 4; }
else{calculation = 0.0; }}}}


某些事件,例如Button onClick()或任何用于移至下一个Activity的事件。您也可以在onCheckedChangeListener()中设置值。

请记住,onCreate()仅在销毁后Activity首次启动时才会被调用。因此,您放入其中的任何代码(除非在某些事件侦听器中)都不会在onCreate()内部进行更改。

编辑

butGPA.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
         if (gpa1.isChecked()){calculation = calculation + 1;}
         else{ if (gpa2.isChecked()) {calculation = calculation + 2; }
         else{ if (gpa3.isChecked()) {calculation = calculation + 3; }
         else{ if (gpa4.isChecked()) {calculation = calculation + 4; }
         else{calculation = 0.0; }}}}
        Intent i = new Intent(Main.this, Main2.class);
        i.putExtra("calc", calculation);
        startActivity(i);
    }
});


像这样将值传递给每个Activity,然后获取值(在onCreate()中或之后),例如

Intent i = getIntent();
double calc = i.getDoubleExtra("calc", 0.0);


这是假定变量最初是double,尽管我不确定为什么不是int。您可能要检查null和其他内容,但是无论如何这应该会让您入门。

关于java - 在整个类(class)中实现双重值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23050513/

10-12 06:04