为什么 bundle 中的 getExtra() 为 null 而 bundle mMap 已获得此值?

Why getExtra() from Bundle is null when but bundle mMap has got this value?

如上问题,为什么?

code screenshot which describes this

向其他人发送数据activity:

private void replaceActivity(LoginModel loginModel) {
    Context context = activity.getApplicationContext();
    Intent intent = new Intent(context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("accessKey", loginModel.getAccessKey());
    intent.putExtra("loginData", loginModel.getUserData());
    context.startActivity(intent);
    activity.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}

如果你要放

intent.putExtra("accessKey", loginModel.getAccessKey());

然后通过bundle.getString("accessKey");

获取

第 1 步:在意图中传递数据

private void replaceActivity(LoginModel loginModel) {
    Context context = activity.getApplicationContext();
    Intent intent = new Intent(context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("accessKey", loginModel.getAccessKey());
    intent.putExtra("loginData", loginModel.getUserData());
    context.startActivity(intent);
    activity.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}

第 2 步:在 MainActivity 中获取数据

String accessKey = getIntent().getStringExtra("accessKey");
UserData userData = getIntent.getParcelableArrayExtra("loginData");

当你通过 intent.putExtra(); 然后你得到数据 .getString(); 如果你想检查 null 然后通过下面的代码检查:

Bundle bundle = getIntent().getExtras();
if (bundle != null && bundle.getString("accessKey") != null) {

}

如果 UserData 是自定义对象,您可以使用 Gson 将对象转换为 JSONObject 并将其传递到 bundle。

第一Activity

Intent activity = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("accessKey", loginModel.getAccessKey());
activity.putExtra("loginData",
                  new Gson().toJson(loginModel.getUserData()));
startActivity(activity);

秒Activity

String jsonLoginData;
Bundle extras = getIntent().getExtras();
if (extras != null) {
   jsonLoginData = extras.getString("loginData");
}
UserData loginData = new Gson().fromJson(jsonLoginData, UserData.class);