Tous les articles

Passe des types complexes entre tes activités

Le code Java de la classe User :

import android.os.Parcel;
import android.os.Parcelable;

public class User implements Parcelable {

    private String prenom;
    private String pseudo;

    public User(String prenom, String pseudo) {
        this.prenom = prenom;
        this.pseudo = pseudo;
    }

    protected User(Parcel in) {
        prenom = in.readString();
        pseudo = in.readString();
    }

    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel in) {
            return new User(in);
        }

        @Override
        public User[] newArray(int size) {
            return new User[size];
        }
    };

    public String getPrenom() {
        return prenom;
    }

    public String getPseudo() {
        return pseudo;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(prenom);
        parcel.writeString(pseudo);
    }
}

Le code Java de MainActivity :

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void ChangeActivity(View view){

        EditText editText = (EditText) findViewById(R.id.et1);
        String str = editText.getText().toString();
        int nbLettre = str.length();

        Intent intent = new Intent(this, MaDeuxiemeActivity.class);

        intent.putExtra("edittext", str);
        intent.putExtra("nbLettre", nbLettre);

        User user = new User("Sebastien", "Seb");
        intent.putExtra("user", user);

        startActivity(intent);
    }
}

Le code Java de MaDeuxiemeActivity :

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MaDeuxiemeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ma_deuxieme);

        Intent intent = getIntent();
        if (intent != null){
            String str = "";
            if (intent.hasExtra("edittext")){
                str = intent.getStringExtra("edittext");
            }
            int nbLettre = intent.getIntExtra("nbLettre", 0);

            User user = intent.getParcelableExtra("user");
            String userStr = "";
            if (user != null)
                userStr += "\n" + user.getPrenom() + "\n" + user.getPseudo();

            TextView textView = (TextView) findViewById(R.id.tv1);
            textView.setText(str + "; " + nbLettre + userStr);
        }
    }

    public void quitterActivity(View view){
        this.finish();
    }
}

Le code XML de MainActivity :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.formation.changementactivity.MainActivity">

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bt"
        />

    <Button
        android:id="@+id/bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Changer d'activity"
        android:onClick="ChangeActivity"
        android:layout_centerInParent="true"
        />

</RelativeLayout>

Le code XML de MaDeuxiemeActivity :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.formation.changementactivity.MaDeuxiemeActivity"
    android:gravity="center"
    android:orientation="vertical"
    >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Vous etes sur la deuxieme activity"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Quitter"
        android:onClick="quitterActivity"
        />

</LinearLayout>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *