Je fais une application Android qui a 2 activités. Dans cette application, l'activité numéro 1 va commencer l'activité numéro 2 et demander des données à partir de l'activité numéro 2. J'utilise l'intention de transférer des données entre eux. Comme je le sais, l'activité 2 n'envoie des données qu'après l'appel de la fonction finish(). Mais dans mon application, je veux garder l'activité 2 toujours active. Donc, est-il possible d'envoyer des données en utilisant l'intention sans attendre la fonction finish()?Comment envoyer des données par intention sans utiliser la fonction finish()?
MISE À JOUR: Voici mon code source:
- en nombre Activité 1:
Numéro d'activité ouvert lorsque le bouton est pressé
public static final int REQUEST_CODE_INPUT=10;
public static final int RESULT_CODE_1=20;
public static final int RESULT_CODE_2=21;
private String TAG = "FirstActivity";
btnInputData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//Open Activity number 2 With REQUEST_CODE_INPUT
Intent intent=new Intent(FirstActivity.this, SecondActivity.class);
//Call startActivityForResul
startActivityForResult(intent, REQUEST_CODE_INPUT);
}
});
processus a reçu des données
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
//Show Log
Log.d(TAG,"onActivityResult: requestCode = "+ requestCode+ "; resultCode = "+ resultCode);
//check if requestCode =REQUEST_CODE_INPUT
//
if(requestCode==REQUEST_CODE_INPUT)
{
//Check ResultCode from Activity 2
switch(resultCode)
{
case RESULT_CODE_1:
//value from Activity number 2
int v1= data.getIntExtra("data", 0);
arrData.add(v1*v1);
break;
case RESULT_CODE_2:
//value from Activity number 2
int v2= data.getIntExtra("data", 0);
arrData.add(v2);
break;
}
}
}
* Dans le numéro d'activité 2
fonction d'appel envoi de données lorsque le bouton est pressé
btnSave1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//
sendToFirstActivity(FirstActivity.RESULT_CODE_1);
}
});
btnSave2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//
sendToFirstActivity(FirstActivity.RESULT_CODE_2);
}
});
Fonction pour renvoyer des données au numéro d'activité 1
public void sendToFirstActivity(int resultcode)
{
Intent intent=getIntent();
int value= Integer.parseInt(editNumber.getText()+"");
intent.putExtra("data", value);
setResult(resultcode, intent);
finish();
}
Dans ce code, après le bouton de presse l'activité le numéro 2 fermera et enverra des données à l'activité numéro 1. Quand j'essaye de retirer la fonction finish(), l'activité 2 ne se fermera pas mais n'enverra pas de données à l'activité numéro 1.
mettez votre code ici –
Veuillez poster votre code pour empiler –
Terminer() est nécessaire pour fermer l'activité en cours. Cela n'a rien à voir avec le transfert de données entre les activités. Utilisez la méthode putExtra() pour transférer les données. Lorsque startActivty() est déclenché, il envoie les données à une autre activité. Terminer n'a rien à faire. Il ferme juste l'activité après que votre prochaine activité se déclenche. –