Android 如何计算其他活动中的总价值?
我需要对第二个活动中的值求和。我不能正确地算出总数。有人能帮我吗Android 如何计算其他活动中的总价值?,android,Android,我需要对第二个活动中的值求和。我不能正确地算出总数。有人能帮我吗 final EditText et = (EditText)findViewById(R.id.etwalkingburned); final EditText ed = (EditText)findViewById(R.id.etrunningburned); mcardiototalbutton = (Button)findViewById(R.id.cardiototalbutton); mcardiototalbutton
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);
}
问题在于你如何在你的意图中加入和获得额外的东西
myIntent.putExtra("CardioTotal",walkingburned);
myIntent.putExtra("CardioTotal",runningburned);
将一个额外的视为键值对。每次调用putExtra
时,第一个参数应该是不同的字符串,否则将覆盖已输入的值。因此,基本上您输入了walkingburned
值,然后使用runningburn
值重写它,因为您使用了相同的键字符串
同样,在第二个活动中,您需要通过其唯一的字符串“key”引用值,否则您将只获得相同的值两次
在这种情况下,剥猫皮的方法不止一种。更具体地说,您可以在第一个活动中进行加法,并且只存储一个额外值(总和),以避免多个额外值的混淆。但是,我认为,了解附加功能和意图是如何工作的,这会让你受益更多
对于初学者来说,您可以简单地调用与变量名类似的字符串,而不是为每个额外变量使用“CardioTotal”
。这就是我所做的,在我看来,这将使您的代码更容易理解
myIntent.putExtra("Walking Burned",walkingburned);
myIntent.putExtra("Running Burned",runningburned);
在第一个参数中输入什么字符串并不重要,只要知道它们应该表示不同的值
然后你需要做的第二个改变是如何从意图中获得额外的东西
int walkingburned = extras.getInt("CardioTotal");
int runningburned = extras.getInt("CardioTotal");
您当前所做的是检索两个单独变量的相同值(您使用的是相同的键字符串,因此它是相同的值)。因此,您将看到的值是runningburn
值的两倍
现在,由于您的意图中有两个不同的字符串用于两个不同的变量,您可以说:
int walkingburned = extras.getInt("Walking Burned");
int runningburned = extras.getInt("Running Burned");
代码的其余部分很好。
在TotalActivity中也不需要这些行
walkingburned = walkingburned + 0;
runningburned = runningburned + 0;
抱歉,这是一个很长的回答,但我想解释一些事情
希望有帮助 将这些edittext的inputtype设置为number。将它们添加到您要获取它们的活动中,并将总和发送到下一个活动您在将您的值放入Intent extras时使用了“CardioTotal”两次作为键。使用不同的键。我还注意到您在第一次
活动的onClick(…)
方法中使用了getApplicationContext()
。应用程序上下文
只能在某些情况下用于启动活动
(请参阅本文中的上下文功能-)。相反,请使用第一个活动的上下文
,例如MyActivity。此
。非常感谢您的帮助