如何在2个活动之间共享数据,其中第一个活动称为第二个活动

时间:2012-05-29 08:38:36

标签: android

对于这个神秘的问题感到抱歉,我不知道如何说出来。

         Intent myIntent = new Intent(CurrentClass.this, ClassToCall.class);
         myIntent.putExtra("name", "value");
         Current.this.startActivity(myIntent);     

我知道上面的代码可用于将消息从CurrentClass传递给ClassToCall但是当我在ClassToCall中调用“finish()”方法时,我想将String传递回CurrentClass。我可以得到一些如何做到这一点的帮助吗?再次抱歉我的措辞如何。

3 个答案:

答案 0 :(得分:4)

有时我们需要将数据或参数传递给Android上的另一个Activity。一次只能激活一项活动。活动打开结果和打开活动的新活动需要参数来根据请求设置其界面或其他选项。因此,系统可以处理两个Activity之间的发送和检索参数非常重要。

注意: startActivity(Intent)方法用于启动一个新活动,该活动将放置在活动堆栈的顶部。它需要一个参数,一个Intent,它描述了要执行的活动。

它非常易于使用。您可以使用请求代码启动和活动,然后使用结果代码结束它。然后,活动调用者可以使用请求代码和结果代码来实现切换器并实现一些逻辑。很明显,如果你看下面的例子:

startActivityForResult(intent, CREATE_REQUEST_CODE);

在同一个活动中,您需要实现接收方法。它看起来像这样:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == CREATE_REQUEST_CODE) {
      if (resultCode == RESULT_OK) {
        //ACT
      }
   }
}

最后一部分是在被调用的活动中。完成后,您必须指定结果代码:

setResult(RESULT_CANCELED, null);
finish();

//或

setResult(RESULT_OK, null);
finish();

最后,我建议您重用已在android sdk中实现的结果代码。特别是你至少可以重用

RESULT_CANCELED : Standard activity result : operation canceled.
RESULT_FIRST_USER : Start of user-defined activity results.
RESULT_OK : Standard activity result : operation succeeded. 

developer.android.com

中的文档

观看有关此问题和示例的详细信息:

Link 1Link 2,可能是最好的例子(more)。

答案 1 :(得分:2)

你可以使用startActivityForResult(myIntent,1);

来完成

See this Example

答案 2 :(得分:0)

在ClassToCall中创建一个明确的意图,如下所示:

   Intent intent = new Intent(ClassToCall.this,CurrentClass.class);
   intent.putExtra("Value", "Robert");
   startActivity(intent);
   finish();

在CurrentClass中:

    Bundle extra = getIntent().getExtras();
    if(extra != null){
    String extras =  extra.getString("Value");

    Log.e("TAG", " "+extras );
    }

希望这就是你要找的东西。