是否可以在不启动新活动的情况下调用putExtras()和getExtra()?

时间:2012-06-29 09:57:06

标签: android

我有两个活动,通过每个活动的片段并排显示在一个屏幕上。 当我点击其中一个活动上的按钮时,我想发送一个字符串,然后另一个活动应该检索我发送的字符串。

我知道可以使用经典方式setString()getString()方法来实现这一点。但我想知道,如果不在新屏幕上打开目标活动,可以使用putExtra()getExtra()来完成吗?

我欢迎任何解决方案。 谢谢

2 个答案:

答案 0 :(得分:0)

您可以将活动的 intent 作为全局变量,并尝试使用一个活动中的putExtra(),然后使用另一个活动getExtra()活性。

例如,

public class activityOne extends Activity
{
   public static Intent intent = null;
   @Override
   protected synchronized final void onCreate(final Bundle savedInstanceState)
   {
      intent = getIntent();
   }
}

public class activityTwo extends Activity
{
   public static Intent intent = null;
   @Override
   protected synchronized final void onCreate(final Bundle savedInstanceState)
   {
      intent = getIntent();
   }
}

现在,无论您想要什么,都可以访问他们的意图,例如activityOne.intent,activityTwo.intent,然后 null 检查

答案 1 :(得分:0)

您可以将意图作为广播发送,并在其开始时将接收片段注册到该广播(并在其销毁时取消注册)。

发送片段:

Intent intent= new Intent(PARAM_TRANSFER);
intent.putExtra(key, extra);
sendBroadcast(intent);

接收片段:

寄存器:

IntentFilter intentFilter = new IntentFilter(PARAM_TRANSFER);
registerReceiver(mReceiver, intentFilter);

注销:

try {
   unregisterReceiver(mReceiver);
} catch (Exception e) {}

获得参数:

private class MyReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
     intent.getExtra(key);
  }
}