2014-12-08 77 views
-1

我需要总结第二个活动中的值。我无法让它正确地完成。有人会善意帮助我吗?如何在其他Activity中总计值?

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

将这些edittext的inputtype设置为数字。将它们添加到获得它们的活动中,并将总和发送到下一个活动 – 2014-12-08 01:53:41

+2

将“CardioTotal”两次用作关键点时,将值放入Intent附加项中。使用不同的键。 – Squonk 2014-12-08 02:05:14

+0

另外我刚刚注意到你在'Activity'的'onClick(...)'方法中使用'getApplicationContext()'。在某些情况下,应用“Context”只能用于启动“Activity”(请参阅​​本文中的上下文功能 - http://www.doubleencore.com/2013/06/context/)。相反,使用第一个“Activity”的'Context',例如'MyActivity.this'。 – Squonk 2014-12-08 02:48:30

回答

0

问题是你的方式,并从你的意图得到额外的东西。

myIntent.putExtra("CardioTotal",walkingburned); 
myIntent.putExtra("CardioTotal",runningburned); 

想想一个额外的键值对。每当您拨打putExtra时,您应该使用不同的字符串作为第一个参数,否则您将覆盖已输入内容的值。因此,基本上,您会输入walkingburned值,然后用runningburned值覆盖它,因为您使用过相同的密钥字符串。

同样,在你的第二个活动中,你需要通过它们唯一的字符串“key”来引用值,否则你只会得到相同的值两次。

在这种情况下,有不止一种方法来剥皮猫。更具体地说,您可以在第一个活动中进行添加,并且只存储一个额外(总和)以避免多个额外的混淆。但是,我认为这将有助于更多地了解附加内容和意图如何工作。

对于初学者,您可以简单地调用与变量名称类似的字符串来代替每个额外的"CardioTotal"。这就是我所做的,这会让我的代码更易于理解。

myIntent.putExtra("Walking Burned",walkingburned); 
myIntent.putExtra("Running Burned",runningburned); 

只要您知道它们应该表示不同的值,那么在第一个参数中放入什么字符串并不重要。

然后你需要做的第二个改变是你如何得到额外的意图。

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; 

对不起,这是一个很长的答案,但我想解释一些事情。

希望它有帮助!

+0

非常感谢你的帮助 – shirA 2014-12-08 11:50:42

相关问题