活动之间如何传递值

3
我创建了三个活动:firstActivitysecondActivitythirdActivity
  1. firstActivity 是主活动。
  2. secondActivity 只有在收到短信后才能工作,然后将消息发送给 thirdActivity
  3. thirdActivity 将字符串值转换为双精度值,然后将双精度值发送到 firstActivity
我能够从 secondActivitythirdActivity 发送值,但我不知道如何将值从 thirdActivity 传递到 firstActivity。请告诉我应该怎么做。
3个回答

1

有几种方法可以实现这个。

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

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


1
每当您需要调用一个返回结果的活动时,例如在这种情况下您有thirdActivity,您总是可以使用方法startActivityForResult而不仅仅是startActivity。一旦thirdActivity完成其处理并希望返回结果值,它应该调用setResult,就这样。
这种方法的问题在于您似乎在中间有secondActivity。这真的必要吗?

是的,这是必须的。我想通过BroadcastReceiver接收短信并将其发送到第三个活动。根据您的答案,您能给我一个例子吗? - Zephyr
我认为你在那里做的事情并不需要三个活动。你现在在第三个活动中进行的解析过程完全可以在第一个活动中完成,只要它从第二个活动(我假设是BroadcastReceiver)接收到“原始”消息即可。 - Bilthon

0

感谢您的帮助。现在我可以将值从第三个活动传递到第一个活动,这是我的做法。

第三个活动:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接