Tuto Android: utilisation de startActivityForResult() au niveau de l'Intent

A l'aide de la méthode Android startActivityForResult (), nous pouvons obtenir des résultats d'une autre activité.
A l'aide de la méthode Android startActivityForResult (), nous pouvons envoyer des informations d'une activité à l'autre et vice-versa. La méthode startActivityForResult(), nécessite un résultat de la deuxième activité (l’activité invoquée).
Dans ce cas, nous devons substituer la méthode onActivityResult() qui est appelée automatiquement lorsque la deuxième activité rendra le résultat.
Dans notre exemple nous voulons passer le l’activité principale à l’activité secondaire après avoir cliqué sur le bouton. Il faut utiliser startActivityForResult().La première activité contient un TextView et un bouton. La seconde activité contient un EditText et un bouton.



Lorsque l’utilisateur tape quelque chose dans l’EditText et clique sur le bouton soumettre l’activité principale doit s’afficher et le TextView doit afficher le contenu que l’utilisateur a saisi dans la seconde activité.


Solution :

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:paddingBottom="@dimen/activity_vertical_margin"
   
android:paddingLeft="@dimen/activity_horizontal_margin"
   
android:paddingRight="@dimen/activity_horizontal_margin"
   
android:paddingTop="@dimen/activity_vertical_margin"
   
tools:context=".MainActivity" >
    <
TextView
       
android:id="@+id/textView1"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_alignLeft="@+id/button1"
       
android:layout_alignParentTop="true"
       
android:layout_marginTop="48dp"
       
android:text="Message Par defaut" />
    <
Button
       
android:id="@+id/button1"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_below="@+id/textView1"
       
android:layout_centerHorizontal="true"
       
android:layout_marginTop="42dp"
       
android:text="Obtenir Message" />
</
RelativeLayout>

Activity_second.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SecondActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="61dp"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10" />

    <TextView

        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/editText1"
        android:layout_alignBottom="@+id/editText1"
        android:layout_alignParentLeft="true"
        android:text=" Message:" />

    <Button

        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="34dp"
        android:text="Soumettre" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    TextView textView1;

    Button button1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        textView1=(TextView)findViewById(R.id.textView1);

        button1=(Button)findViewById(R.id.button1);

        button1.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View arg0) {

      Intent intent = new Intent(MainActivity.this, SecondActivity.class);

      startActivityForResult(intent, 2);// Activity is started with requestCode 2

            }

        });

    }

    // Call Back method  to get the Message form other Activity

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data)

    {

        super.onActivityResult(requestCode, resultCode, data);

    // check if the request code is same as what is passed  here it is 2

        if(requestCode==2)

        {

            String message=data.getStringExtra("MESSAGE");

            textView1.setText(message);

        }

    }

   }
SecondActivity.java
public class SecondActivity extends Activity {

    EditText editText1;

    Button button1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_second);

        editText1=(EditText)findViewById(R.id.editText1);

        button1=(Button)findViewById(R.id.button1);

        button1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View arg0) {

                String message = editText1.getText().toString();

                Intent intent = new Intent();

                intent.putExtra("MESSAGE", message);

                setResult(2, intent);

                finish();//finishing activity

            }

        });

    }

}


La classe d’activité principale contient une méthode nommée onActivityResult déclenchée à chaque retour du résultat d'une autre activité. Cette méthode contient trois paramètres: le premier indique le code retourné (dans notre exemple c’est 2), le second paramètre est le résultat retourné (3 valeurs possibles : RESULT_CANCELED, RESULT_OK, RESULT_FIRST_USER) et enfin l’intent.

Commentaires

Posts les plus consultés de ce blog

Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json