2012-01-17 40 views
3

我已经创建了3个活动:firstActivity,secondActivitythirdActivity如何通过活动之间的值

  1. firstActivity是主要活动。
  2. secondActivity只有在收到短信时才会有效,然后将短信发送到thirdActivity
  3. thirdActivity将字符串值转换为双精度值,然后将双精度值发送到firstActivity

我可以送价值从secondActivitythirdActivity,但我不知道如何传递值从thirdActivityfirstActivity。请告诉我应该怎么做。

+0

谢谢您的编辑。 – Zephyr 2012-01-20 04:41:27

回答

1

这有几种方法。

一个会使用自定义应用程序类来存储整个应用程序的排序“全局值”。这样,您可以将值设置为firstActivity并在thirdActivity中使用它们。

看看this SO问题来了解如何在Android应用程序中存储全局状态。

+0

谢谢你的回答,我想研究它。 – Zephyr 2012-01-20 04:44:08

1

每当你有一个活动要求一个结果,就像在这种情况下你有第三个活动,你总是可以使用方法startActivityForResult而不是只是startActivity。一旦thirdActivity完成它的处理并且它想要返回结果值,它应该调用setResult,就是这样。

这种方法在这里的问题是,你有种在中间secondActivity。它真的有必要吗?

+0

是的,这是必要的。我想使用BroadcastReceiver接收短信并将其发送到thirdActivity。从你的回答中,你能举个例子吗? – Zephyr 2012-01-20 04:36:40

+0

我会说你并不真的需要3个活动来为你在那里做什么。您现在在thirdActivity中执行的解析过程很可能在firstActivity中完成,只要它从secondActivity(我认为它是BroadcastReceiver)获取“原始”消息即可。 – Bilthon 2012-01-24 02:18:23

0

谢谢你的帮助。现在我可以将thirdActivity的值传递给firstActivity,这就是我的做法。

ThirdActivity:

public class ThirdActivity extends Activity { 

double value1, value2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ... 

    value1 = Double.parseDouble(value1FromSecondActivity); 
    value2 = Double.parseDouble(value2FromSecondActivity);  

    Intent intent = new Intent(this, FirstActivity.class); 
    intent.putExtra("Value1", value1); 
    intent.putExtra("Value2", value2); 
    startActivity(intent); 
    finish(); 
    } 
} 

FirstActivity:

public class FirstActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ... 
} 

@Override 
protected void onResume() { 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     dValue1 = extras.getDouble("Value1"); 
     dValue2 = extras.getDouble("Value2"); 
     Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show(); 
    } 
    else { 
     Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show(); 
    } 
    super.onResume(); 
    } 
}