我需要对第二个活动中的值求和。我无法正确地得到它。有人会帮助我吗?
final EditText et = (EditText)findViewById(R.id.etwalkingburned);
final EditText ed = (EditText)findViewById(R.id.etrunningburned);
mcardiototalbutton = (Button)findViewById(R.id.cardiototalbutton);
mcardiototalbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int walkingburned = Integer.parseInt(et.getText().toString());
int runningburned = Integer.parseInt(ed.getText().toString());
Intent myIntent = new Intent(getApplicationContext(),TotalActivity.class);
myIntent.putExtra("CardioTotal",walkingburned);
myIntent.putExtra("CardioTotal",runningburned);
startActivity(myIntent);
}
});
}
public class TotalActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.totalactivity);
Bundle extras = getIntent().getExtras();
int walkingburned = extras.getInt("CardioTotal");
int runningburned = extras.getInt("CardioTotal");
int cardiototal = walkingburned + runningburned;
TextView tv = (TextView)findViewById(R.id.cardiototalresult);
walkingburned = walkingburned + 0;
runningburned = runningburned + 0;
cardiototal = walkingburned + runningburned;
tv.setText("Cals.:" + cardiototal);
}
答案 0 :(得分:0)
问题在于你是如何在意图中加入和获取额外内容的。
myIntent.putExtra("CardioTotal",walkingburned);
myIntent.putExtra("CardioTotal",runningburned);
将额外视为键值对。每次调用putExtra
时,您应该使用不同的字符串作为第一个参数,否则您将覆盖您已经放入的值。所以基本上您输入walkingburned
值并且然后用runningburned
值覆盖它,因为你使用了相同的键字符串。
同样,在您的第二个活动中,您需要通过其唯一字符串"键"来引用这些值。或者你只会得到两次相同的值。
在这种情况下,有一种方法可以给猫皮肤。更具体地说,你可以在你的第一个活动中进行添加,只存储一个额外的(总和),以避免混淆多个额外的活动。但是,我认为理解附加内容和意图的工作原理会让你受益更多。
对于初学者而言,您可以简单地将字符串调用类似于变量名的字符串,而不是使用"CardioTotal"
。这就是我所做的,它会使我的代码更容易理解。
myIntent.putExtra("Walking Burned",walkingburned);
myIntent.putExtra("Running Burned",runningburned);
只要你知道它们应该代表不同的值,你在第一个参数中放置的String并不重要。
您需要进行的第二项更改是如何从意图中获得额外的收益。
int walkingburned = extras.getInt("CardioTotal");
int runningburned = extras.getInt("CardioTotal");
您当前正在做的是检索两个单独变量的相同值(您使用相同的键字符串,因此它是相同的值)。因此,您将看到的值是runningburned
值的两倍。
现在,既然你的意图中有两个不同的字符串,你可以说:
int walkingburned = extras.getInt("Walking Burned");
int runningburned = extras.getInt("Running Burned");
你的其余代码很好。 你也不需要在TotalActivity中使用这些行
walkingburned = walkingburned + 0;
runningburned = runningburned + 0;
对不起,这是一个非常长的答案,但我想解释一些事情。
希望它有所帮助!