如何在另一个Activity中总值?

时间:2014-12-08 01:47:15

标签: android

我需要对第二个活动中的值求和。我无法正确地得到它。有人会帮助我吗?

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);
}

1 个答案:

答案 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;

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

希望它有所帮助!