将对象之间传递给获取空对象的活动

时间:2018-08-24 16:39:33

标签: java android

我正在尝试将dataUser对象从Register活动传递到Login活动。但是登录活动中的dataUser为空。

我的DataUser类实现了Serializable

RegisterActivity.java:

DataUser dataUser = new DataUser(null, null,null);

dataUser.setName(nameET.getText().toString());

dataUser.setSurname(surnameET.getText().toString());

dataUser.setEmail(emailET.getText().toString());

Bundle bundleID = new Bundle();
bundleID.putSerializable("user", dataUser);
Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
intent.putExtra("bundle", bundleID);
startActivity(intent);

LoginActivity.java:

 Bundle objectUser = getIntent().getExtras();
 if (objectUser!=null){
        dataUser= (DataUser) objectUser.getSerializable("user");
        emailET.setText(dataUser.getEmail());
 }

当我调试时,这是我在“注册活动”中得到的: CodeRegisterActivity

dataUser and bundle aren't empty

这是LoginActivity的结果:

login getSerializable

dataUser is null

我试图在其他类似的问题中找到解决方案,但没有找到。有解决这个问题的想法吗?

3 个答案:

答案 0 :(得分:1)

当您致电get getIntent().getExtras();时,您会得到一个捆绑包,其中包含一个捆绑包,其中包含您的DataUser

因此,您可以将数据用户直接放在附加功能中 intent.putExtra("user" , (Serializable) dataUser);

或者让用户脱离捆绑包

Bundle extras = getIntent().getExtras();
Bundle bundle = extras.get("bundle");
dataUser= (DataUser) bundle.getSerializable("user");

答案 1 :(得分:0)

例如,在intent.putExtra()中传递您的列表

Intent intent = new Intent(getApplicationContext() , LoginActivity.class);
intent.putExtra("user" , (Serializable) dataUser );
startActivity(intent);

并在NextActivity中获取列表

Intent intent = getIntent();
dataUser= (DataUser)intent.getSerializableExtra("user");

答案 2 :(得分:0)

那是因为您使用了两个捆绑,我的意思是您放入了意图捆绑,并且有了对象捆绑。

尝试

Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
intent.putExtra("user",dataUser);
startActivity(intent);

在第二个活动中,尝试以下操作:

 Bundle objectUser = getIntent().getExtras();
 if (objectUser!=null){
        dataUser= (DataUser) objectUser.getSerializable("user");
        emailET.setText(dataUser.getEmail());
 }