[英]Adding two values from two different activities and displaying the total in a different activity
[英]How to total two int values from two different activities in 3rd?
我在创建活动时将setText值设置为0的按钮。 这是0,因为我在游戏开始时总计两个int值,分别为valueA和valueB。 在另一个活动结束之后,我的valueA现在被设置为ActivityClassA中的某个公共static int值,比方说100。我现在需要在该活动结束时将0值更改为新的valueA + valueB值,100 + 0 = 100。应该在onResume方法中执行此操作,所以我将其放在此处,并且工作正常。
button.setText("" + ActivityClassA.valueA + ActivityClassB.valueB);
但是,现在我开始了activity2,而在该活动结束之后,我在ActivityClassB中拥有了一个公共静态int valueB,可以说是500。现在我需要将valueA + valueB的总和更新为100 + 500 = 600。 但是现在,我的总和是500。这就是我的问题。
我总会得到最后的设定值。 如果我先启动ActivityB,然后再启动A,则我的总数为100。
使用Intent
和onActivityResult
在活动之间共享数据。 为此类内容使用静态值不是最佳选择。
您应该使用startActivityForResult
启动ActivityClassA和ActivityClassB,然后使用onActivityResult
显示结果。 您的结构应类似于以下内容。
在主要活动中:
private static int ACT_A = 1;
private static int ACT_B = 2;
private int resultA = 0;
private int resultB = 0;
public void onCreate(Bundle saved) {
...
myTextView.setText("" + (resultA + resultB));
...
}
启动ActivityClassA和ActivityClassB分别为:
Intent i = new Intent(this, ActivityClassA.class);
startActivityForResult(i, ACT_A);
要么
Intent i = new Intent(this, ActivityClassB.class);
startActivityForResult(i, ACT_B);
在ActivityClassA和ActivityClassB中,您将具有如下代码:
int curScore;
...
Intent resp = new Intent();
resp.putExtra("score", curScore);
setResult(1, resp);
finish();
最后,在您的主要活动中,您将具有onActivityResult
方法:
public void onActivityResult(int reqCode, int respCode, Intent i) {
if(respCode == 1) {
switch(reqCode) {
case ACT_A: resultA = i.getIntExtra("score", resultA);
break;
case ACT_B: resultB = i.getIntExtra("score", resultB);
break;
}
myTextView.setText("" + (resultA + resultB));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.