Passare oggetti alle Activity in Android tramite gli Intent
In Android, attraverso il meccanismo degli Intent, è possibile richiamare e passare valori tra le Activity.
Per farlo abbiamo due metodi:
- putExtra -> invia i dati
- getExtra -> raccoglie i dati
Di default è possibile inviare solo dati nei formati standard; String, int, char, ecc.
E' possibile passare oggetti custom, ma devono implementare almeno Serializable.
Dico almeno perchè potremmo usare anche Parcelable, ma al momento lo trovo solo più macchinoso.
Quindi noi andremo con Serializable:
import java.io.Serializable;
public class Users implements Serializable {
public long id;
public String userName;
}
Adesso nella nostra Activity primaria:
Users users = new Users();
users.id = 1;
users.userName = "CIAO";
Intent intent = new Intent(this, HomeActivity.class);
intent.putExtra("USERS", us);
startActivity(intent);
Infine nella Activity secondaria:
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class HomeActivity extends AppCompatActivity {
private Users u;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
u = (Users) getIntent().getSerializableExtra("USERS");
Log.i("U", u.userName);
}
}
Come vedete abbiamo usato getSerializableExtra in questo caso, in quanto abbiamo implementato Serializable.
Enjoy!
java android intent activity serializable getserializableextra
Commentami!