在整个班级中携带双倍价值

时间:2014-04-14 01:21:00

标签: java android

我会尝试减少信息,但每次按下单选按钮时,此应用程序都会计算得分。有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);
        }
    });


    }

2 个答案:

答案 0 :(得分:1)

由于您的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和其他事情,但这应该可以帮助您入门。

答案 1 :(得分:0)

你可以使用

 newIntent.putExtra("varname",value);

设置属性值。并且可以获得新意图的价值

getStringExtra("varname");

并请参考此问题:How do you pass data/parameters to another activity in Android。它可能有所帮助。