0

抱歉这个神秘的问题我不知道该怎么说。

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

我知道上面的代码可用于将消息从 CurrentClass 传递给 ClassToCall,但是当我在 ClassToCall 中调用“finish()”方法时,我想将一个字符串传递回 CurrentClass。我能得到一些帮助吗?再次对我的措辞感到抱歉。

4

3 回答 3

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的文档

观看有关此问题和示例的更多信息:

链接 1链接 2可能是最好的例子(更多)。

于 2012-05-29T08:55:19.687 回答
2

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

请参阅此示例

于 2012-05-29T08:40:42.017 回答
0

在 ClassToCall 中创建一个显式意图,如下所示:

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

在当前类中:

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

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

希望这是您正在寻找的。

于 2012-05-29T08:59:54.093 回答