getIntent()。getExtra()返回null

时间:2016-09-12 21:36:43

标签: android android-intent android-activity

我的代码可以将用户从底栏引导到个人资料页面。

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中的

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    String uid = getIntent().getStringExtra("uid");
    if(uid != null){
        ...
    }
}

我也尝试使用Bundle = getIntent().getExtra()得到相同的结果。我见过类似的问题。情况似乎如此:getIntent() Extras always NULL

我试过

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

getIntent().getExtra != null仍然是假的。

感谢您的帮助和建议。

编辑:为startNewIntent()

添加了上下文

2 个答案:

答案 0 :(得分:0)

如果您的班级名称已经存在,请避免".class"

public void startNewIntent(Class className, String uid){
Intent intent = new Intent(act.this, className+".class");
intent.putExtra("uid", uid);
startActivity(intent);
}

下一阶段

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
String uid = getIntent().getExtras().getString("uid");
if(uid != null){
    ...
 }
}

答案 1 :(得分:0)

不是检查onCreate(),而是检查onNewIntent():

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进行活动。所以这是启动模式的行为。