协慌网

登录 贡献 社区

如何在 Android 应用程序中的活动之间传递数据?

我有一个场景,通过登录页面登录后,每个activity都会有一个注销button

点击sign-out ,我将传递已登录用户的session id以进行注销。任何人都可以指导我如何保持session id可用于所有activities

任何替代这种情况

答案

在当前的 Activity 中,创建一个新的Intent

String value="Hello world";
Intent i = new Intent(CurrentActivity.this, NewActivity.class);    
i.putExtra("key",value);
startActivity(i);

然后在新的 Activity 中,检索这些值:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("key");
    //The key argument here must match that used in the other activity
}

使用此技术将变量从一个 Activity 传递到另一个 Activity。

最简单的方法是将会话 ID 传递给您用于启动活动的Intent的注销活动:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);

访问意图下一个活动

String sessionId= getIntent().getStringExtra("EXTRA_SESSION_ID");

Intent 的文档有更多信息(请参阅标题为 “Extras” 的部分)。

Erich 指出,传递Intent附加功能是一种很好的方法。

Application对象是另一种方式,有时在多个活动中处理相同的状态(而不是必须将其放到任何地方)或者比原语和字符串更复杂的对象时更容易。

您可以扩展 Application,然后设置 / 获取您想要的任何内容,并使用getApplication()从任何 Activity(在同一个应用程序中)访问它。

另请注意,您可能会看到的其他方法(如静态)可能会出现问题,因为它们可能会导致内存泄漏 。应用程序也有助于解决此问