2010-10-24 7 views
2

J'ai 2 activités.Identifier si une activité vient de démarrer

L'activité 1 est la 'page d'accueil' qui se compose d'un spinner.

Activité 2 sera lancé une fois un élément de la fileuse a été sélectionné dans l'Activité 1. La valeur de l'élément sera également passé dans l'activité 2.

actvity 2 a également le même tourbillonnement actvity 1.

Je voudrais faire une variable (référencée TABLE_NAME dans le code ci-dessous) dont la valeur sera la sélection faite dans l'activité 1 lorsque l'activité 2 est initialement commencée mais après que la valeur de la variable sera la sélection faite dans l'activité 2

Y at-il un moyen facile d'identifier si une activité a jus t été commencé?

J'ai essayé de montrer ce que je veux dans le code ci-dessous:

public class MyOnItemSelectedListener implements OnItemSelectedListener { 

    public void onItemSelected(AdapterView<?> parent, 
     View view, int pos, long id) {   

      if(this activity was just started) 
      {Intent sender=getIntent(); 
     String TABLE_NAME=sender.getExtras().getString("TABLE_NAME");} 
      else 
      {TABLE_NAME = parent.getItemAtPosition(pos).toString();}    


     Cursor cursor = getStats(TABLE_NAME);    

     showStats(cursor); 

    } 

    public void onNothingSelected(AdapterView<?> parent) { 
     // Do nothing. 
    } 
} 
+5

Quel script/langage de programmation? – BoltClock

+1

Cette modification n'est pas suffisante. Bien sûr, SQL est ce que vous utilisez pour votre base de données, mais quelle langue utilisez-vous pour votre application? – BoltClock

+0

J'ai mis à jour l'édition avec du code. J'espère que cela a plus de sens! – Sumino7

Répondre

0

Le code suivant ...

Intention expéditeur = getIntent(); Chaîne
TABLE_NAME = sender.getExtras(). GetString ("TABLE_NAME");

... devrait être déplacé de votre onItemSelected fonction sélectionnée, et plutôt être fait dans la fonction onCreate de votre activité 2.

Et bien sûr, tout en faisant cela, vous devez également appeler votre getStats/showStats après cela est également fait dans onCreate (ou de préférence, ces deux devraient être refactorisés dans une fonction distincte, comme vous appellera à la fois de onCreate et onItemSelected).

+0

Merci pour votre aide. J'ai ajouté le code à la méthode onCreate qui appelle la méthode getStats/showStats mais cela ne fonctionne que si je commente le code getStats/showStats dans la méthode onItemSelected (l'émulateur se bloque dans le cas contraire). Une idée de pourquoi cela peut arriver? Toutes mes excuses ... Je suis assez nouveau. – Sumino7

+0

@ Sumino7: c'est impossible à dire sans savoir ce qu'il se passe dans vos méthodes 'getStats' /' showStats'.Si vous rencontrez de nouveaux problèmes avec ceux-ci, vous devriez le signaler comme une nouvelle question. N'oubliez pas de marquer la réponse qui vous a le plus aidé (il y a une coche à gauche de chaque réponse à votre question). – Nailuj

0

Si c'est dans Android (qui est l'étiquette qui se trouve sur le poste), vous pouvez mettre un crochet dans la ' Méthode onCreate() dans laquelle vous enregistrez l'activité dans laquelle vous êtes dans la table de base de données. La méthode onCreate est appelée chaque fois qu'une activité est créée/recréée.

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //this is where you would identify the activity has been called, perhaps spinning off a thread to handle a database call:) 
} 
+0

Les appels onCreate se produisent sur votre thread d'interface utilisateur. Ne faites pas d'E/S sur votre thread UI! Vous n'avez pas de garantie de latence et cela peut rendre votre application insensible. – adamp

+0

Je tentais simplement de répondre à la question suivante: existe-t-il un moyen facile d'identifier si une activité vient d'être lancée? Je suis d'accord avec vous sur le fait que I/O ne devrait pas être fait dans le fil de l'interface utilisateur. –

Questions connexes