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>
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
Enregistrer un commentaire
Your comment will be reviewed by moderators