2013-04-07 53 views
0

我有一个setText值设置为0的按钮上创建的活动。这是0,因为我总共有两个int值,valueA和valueB在游戏开始时为0。在另一个活动结束后,我的valueA现在设置为ActivityClassA中的一些公共静态int值,例如100.我现在需要当该活动结束时将该值更改为新值A + valueB值,100 + 0 = 100。我想我应该在onResume方法中做到这一点,所以我把它放在那里,而且工作正常。如何在第三次从两个不同的活动中总计两个int值?

button.setText("" + ActivityClassA.valueA + ActivityClassB.valueB); 

但现在我有活性2起点和活动结束后,我有公共静态INT VALUEB在ActivityClassB这可以说500现在我需要更新总和值是值a + VALUEB为100 + 500 = 600。但现在,我的总和值是500.这就是我的问题。

我总是得到最后的设定值。如果我首先启动ActivityB,然后启动A,那么我将得到总数为100.

+1

看一看在'Activity'类方法'startActivityForResult'和'onActivityResult'。 – 2013-04-07 12:49:27

回答

1

您应该使用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)); 
    } 
} 
+0

谢谢。如果ACT_A和ACT_B ... case表达式必须是常量表达式,则会出现错误。所以我改变了他们到最后。这可以吗? – marjanbaz 2013-04-07 13:16:34

+0

另外,你说:“开始每个ActivityClassA和ActivityClassB为:”....以及我也有错误。它说我应该添加参数来匹配参数'意图(上下文,类)。我应该使用“这个”吗? – marjanbaz 2013-04-07 13:22:19

+0

@marjanbaz对不起,我的错。我错过了调用'new Intent'的第一个参数 - 它应该是'new Intent(this,ActivityClassA.class)'。我更新了我的答案。 – 2013-04-07 14:11:33

2

使用Intent s和onActivityResult在活动之间共享数据。对这种东西使用静态值不是最好的选择。

+0

我试图通过intent传递int值,但没有奏效。如何在我的情况下使用onActivityResult? – marjanbaz 2013-04-07 12:55:13

相关问题