如何在活动之间传递值

时间:2012-01-17 19:23:26

标签: java android android-activity

我创建了3项活动:firstActivitysecondActivitythirdActivity

  1. firstActivity是主要活动。
  2. secondActivity仅在收到短信时才有效,然后将短信发送至thirdActivity
  3. thirdActivity将字符串值转换为double值,然后将double值发送到firstActivity
  4. 我可以将值从secondActivity发送到thirdActivity,但我不知道如何将值从thirdActivity传递到firstActivity。请告诉我如何做到这一点。

3 个答案:

答案 0 :(得分:1)

有几种方法。

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

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

答案 1 :(得分:1)

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

这种方法的问题在于你在中间有第二个活动。真的有必要吗?

答案 2 :(得分:0)

感谢您的帮助。现在我可以将第三个Activity的值传递给firstActivity,这就是我的工作方式。

第三项活动:

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