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