首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >getIntent().getExtra()返回null

getIntent().getExtra()返回null
EN

Stack Overflow用户
提问于 2016-09-13 05:36:43
回答 2查看 3.8K关注 0票数 1

我有代码,直接从底部栏用户到个人资料页。

代码语言:javascript
运行
复制
private void startNewIntent(Class className, String uid){
    Intent intent = new Intent(act, className);
    intent.putExtra("uid", uid);
    act.startActivity(intent);
    act.finish();
}

className = DisplayProfile.class;
if(FirebaseAuth.getInstance().getCurrentUser() != null){
    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    startNewIntent(DisplayProfile.class, uid);
} else {
    startNewIntent(EmailPasswordActivity.class);
}

在ProfileActivity.java中

代码语言:javascript
运行
复制
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    String uid = getIntent().getStringExtra("uid");
    if(uid != null){
        ...
    }
}

我也尝试了Bundle = getIntent().getExtra(),也得到了同样的结果。我也见过类似的问题。看起来就是这样:getIntent() Extras always NULL

我试过了

代码语言:javascript
运行
复制
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

但是getIntent().getExtra != null仍然是错误的。

感谢您的帮助和建议。

编辑:为startNewIntent()添加了上下文

EN

回答 2

Stack Overflow用户

发布于 2016-09-13 17:41:32

不是签入onCreate(),而是签入onNewIntent():

代码语言:javascript
运行
复制
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    String uid = getIntent().getStringExtra("uid");
    if(uid != null){
        ...
    }
}

@Override
protected void onNewIntent(Intent intent){
    super.onNewIntent(intent);
    String uid = getIntent().getStringExtra("uid");
    if(uid != null){
        ...
    }
}

如果它出现在onNewIntent()中,这意味着您正在使用launchMode进行活动。这就是启动模式的行为。

票数 1
EN

Stack Overflow用户

发布于 2016-09-13 13:43:29

如果您的类名中已经存在".class",请避免使用它。

代码语言:javascript
运行
复制
public void startNewIntent(Class className, String uid){
Intent intent = new Intent(act.this, className+".class");
intent.putExtra("uid", uid);
startActivity(intent);
}

下一阶段

代码语言:javascript
运行
复制
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
String uid = getIntent().getExtras().getString("uid");
if(uid != null){
    ...
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39459163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档