我在这里关注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创建它?
任何帮助都将不胜感激。
答案 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并使用正确的额外参数创建意图的公共函数可能更容易。