为什么来自Bundle的getExtra()是null,但是bundle mMap得到了这个值?

时间:2016-07-04 08:54:34

标签: android android-studio bundle parcelable

如上所述,为什么?

code screenshot which describes this

将数据发送到其他活动:

ESAPI.encoder().encodeForHTML

4 个答案:

答案 0 :(得分:1)

如果你要放

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

然后按bundle.getString("accessKey");

获取

答案 1 :(得分:0)

第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");

答案 2 :(得分:0)

当你传递intent.putExtra(); 然后你得到数据.getString(); 如果你想检查null,那么请检查以下代码:

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

}

答案 3 :(得分:0)

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

在第一项活动中

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);

第二次活动

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