簡體   English   中英

將對象之間傳遞給獲取空對象的活動

[英]Passing an object between to activities getting null object

我試圖將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和bundle不為空

這是LoginActivity中的結果:

登錄getSerializable

dataUser為null

我試圖在其他類似的問題中找到解決方案,但沒有找到。 有什么解決辦法嗎?

調用getIntent().getExtras(); 您將獲得一個包含包含您的DataUser的包的包。

因此,您可以將數據用戶直接放在其他intent.putExtra("user" , (Serializable) dataUser);

或者讓用戶脫離捆綁

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

例如,在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");

那是因為您使用兩個包,我的意思是您放入了意圖包,並且有了對象包。

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM