我在使用意图在我的活动之间传递数据时遇到了一些麻烦,特别是当我暂停当前活动时将数据传递给某个以前的活动时,这似乎是个问题。
从第一个活动开始,我就这样开始:
//Create the activity we want to run and place it in an Intent
Intent i = new Intent(activity, JVoiceActivity.class);
//Create a bundle for passing some data.
Bundle b = new Bundle();
//Pass that this is a recording.
b.putBoolean("Record", true);
i.putExtras(b);
//Start it.
activity.startActivityForResult(i, 0);
我使用activity而不仅仅是startActivityForResult的原因是因为这是我传递活动以保持项目面向对象的另一个类。
然后在新的Activity上,我这样关闭它:
public void onPause()
{
Bundle bundle = new Bundle();
bundle.putString("Path", mPath);
Intent i = new Intent();
i.putExtras(bundle);
setResult(RESULT_OK, i);
super.onPause();
}
最后在第一个Activity中我有函数:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(data!= null)
{
正在调用此函数,但Intent数据始终为null。我正在假设它关闭第二个活动的方式,因为我在测试它之前确实有这个工作,当我在设置mPath用于测试目的后直接从我的第二个活动调用Finish()时。
非常感谢任何帮助。
答案 0 :(得分:1)
要看的一些想法:
答案 1 :(得分:0)
onPause方法旨在处理何时关闭您的活动。所以它不应该使用setResult()方法。将setResult放在某个事件上并在结尾处调用finish()。
答案 2 :(得分:0)
你不应该从onPause()调用setResult(),因为它太晚了 - 结果是在finish()方法中设置的,该方法在onPause()方法之前被调用。相反,您可以调用setResult()表单onBackPressed()或在调用finish()之前执行的任何其他方法