获取值传递给新Activity

时间:2014-05-18 09:44:00

标签: java android android-intent android-activity

我在这里关注android编程教程:http://developer.android.com/training/basics/firstapp/starting-activity.html

详细介绍了如何开始新活动并向其发送一些数据。

我现在有这些活动:SplashActivity,LoginActivity,RegisterActivity和MainActivity。

SplashActivity执行快速首选项读取以查看您是否已登录。如果是,则将用户ID传递给MainActivity:

Intent intent = new Intent(this, MainActivity.class);
intent.putExtra(EXTRA_USERID, userID);

其中userID的用户ID号为String

登录和注册活动都会执行其操作,从网络返回有效的用户ID。他们使用上面的相同代码片段将其传递给主要活动。

这是在所有三个活动类中定义的:public final static String EXTRA_USERID= "com.example.myfirstapp.USERID";

在本教程之后,我在MainActivity的onCreate方法中使用了此代码:

Intent intent = getIntent();
String userID = intent.getStringExtra([LoginActivity].EXTRA_USERID);

注意代码[LoginActivity]的方括号。我不知道该把什么放在这里。我不知道哪个活动启动了MainActivity。放置LoginActivity似乎仅在登录活动启动主活动时才起作用。当人们注册或从SplashActivity的首选项中读取用户ID时,返回值为空字符串。

确定哪个活动启动MainActivity的方法是什么?或者有没有办法简单地获取传递给活动的值,而无需指定从哪个Activity创建它?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

putExtra的第一个参数是您定义的字符串键,可用于稍后提取值。密钥应以您应用的软件包名称开头。

只要在启动意图时传递正确的密钥,定义密钥的位置并不重要 - 例如:

public class MainActivity extends Activity {
    public static final String EXTRA_USERID = "com.my.app.USERID";
}

如果从LoginActivity或SplashActivity启动MainActivity,则您希望在创建意图的任何位置引用相同的MainActivity.EXTRA_USERID字符串。定义一个采用用户ID并使用正确的额外参数创建意图的公共函数可能更容易。