繁体   English   中英

如何在3rd中将两个不同活动的两个int值相加?

[英]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。

使用IntentonActivityResult在活动之间共享数据。 为此类内容使用静态值不是最佳选择。

您应该使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM