IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Update dans une autre Activity ?


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Update dans une autre Activity ?
    Bonjour,

    j'ai une question sur les intents je crois.

    je voudrais updater une EditText qui n'est pas dans la même
    Activity que le bouton est cliqué sans pour autant afficher cette
    Activity voici un peu de code pour vous montrer ceci :


    C'est mon Activity de départ elle semble bien rouler mais si il y a quelque chose de pas correct fait-moi le savoir ! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class MainActivity extends TabActivity {
    	private TabHost mTabHost;
     
    	//On déclare toutes les variables dont on aura besoin
    	Button cmdadd;
     
    	private static final int CODE_DE_MON_ACTIVITE = 1;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            Resources res = getResources();
     
            mTabHost = getTabHost();
            TabHost.TabSpec spec;
            Intent intent;
     
     
            // tab info
            intent = new Intent(this,InfoActivity.class);
     
            spec = mTabHost.newTabSpec("Info")
            		.setIndicator("Info",res.getDrawable(R.drawable.tabinfo))
            		.setContent(intent);
     
            mTabHost.addTab(spec);
     
            // tab info
            intent = new Intent(this,ResultActivity.class);
     
            spec = mTabHost.newTabSpec("Result")
            		.setIndicator("Result",res.getDrawable(R.drawable.tab_mresult))
            		.setContent(intent);
     
            mTabHost.addTab(spec);
     
            // tab info
            intent = new Intent(this,SettingActivity.class);
     
            spec = mTabHost.newTabSpec("Setting")
            		.setIndicator("Setting",res.getDrawable(R.drawable.tab_setting))
            		.setContent(intent);
     
            mTabHost.addTab(spec);
     
            mTabHost.setCurrentTab(0);
     
     
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
     
     
    }
    ici c'est mon activity avec le bouton qui déclanche ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    public class InfoActivity extends Activity {
     
    	//On déclare toutes les variables dont on aura besoin
    	Button cmdadd;
    	EditText mass;
     
    	private double resultbac;
    	private int cptdrink = 0;
    	private int intmass = 0;
    	private float mlalc = 0;
    	private float calmass = 0;
    	private float result = 0;
    	Intent intent;
     
     
    	private static final int CODE_DE_MON_ACTIVITE = 2;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_info);
     
            Toast.makeText(getApplicationContext(), "InfoActivity",Toast.LENGTH_LONG).show();
     
            //On récupère tout les éléments de notre interface graphique grâce aux ID
            cmdadd = (Button) findViewById(R.id.btnadd);
            mass = (EditText) findViewById(R.id.txtmass);
     
     
     
     
            //On attribut un écouteur d'évènement à tout les boutons
            cmdadd.setOnClickListener(new View.OnClickListener() {
            	public void onClick(View v) {
            		adddrink();
            	}
     
    			private void adddrink() {
     
    				intmass = Integer.parseInt(mass.getText().toString());
     
    				cptdrink = cptdrink + 1;
     
    				mlalc = (float) ((cptdrink * 17) * 0.8);
     
    				calmass = (float) (intmass * 0.7);
     
    				result = mlalc / calmass;
     
     
     
    				//On créé un objet Bundle, c'est ce qui va nous permetre d'envoyer des données à l'autre Activity
    				Bundle objetbundle = new Bundle();
    				//Cela fonctionne plus ou moins comme une HashMap, on entre une clef et sa valeur en face
    				objetbundle.putFloat("bac", result);
     
    				intent = new Intent(InfoActivity.this,ResultActivity.class);
     
    				//On affecte à l'Intent le Bundle que l'on a créé
    				intent.putExtras(objetbundle);
     
    				// On démarre l'autre Activity
    				 startActivity(intent);
     
     
     
    			}
            });
     
        }
     
    }
    ensuite pour finir l'activity avec le EditText que j'aimerais mettre a jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class ResultActivity extends Activity {
     
    	//On déclare toutes les variables dont on aura besoin
    	float fbac;
    	EditText bac;
    	TimePicker tp;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Toast.makeText(getApplicationContext(),"ResultActivity",Toast.LENGTH_LONG).show();
            setContentView(R.layout.activity_result);
     
        	//on récupère tous les éléments
     
            bac = (EditText) findViewById(R.id.txtbac);
            tp = (TimePicker) findViewById(R.id.drivetime);
     
     
            //On récupère l'objet Bundle envoyé par l'autre Activity
            Bundle objetbunble  = this.getIntent().getExtras();
     
            //On récupère les données du Bundle
            if (objetbunble != null && objetbunble.containsKey("bac")) {
            	fbac =  objetbunble.getFloat("bac");
            	bac.setText(Float.toString(fbac));
     
     
            }
     
     
        }
     
    }
    comme première question je me demandais si cela est possible et comment
    ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            bac = (EditText) findViewById(R.id.txtbac);
    	EditText bac;
            bac.setText(Float.toString(result));
    dans mon InfoActivity même si l'Edittext est dans ResultActivity ?

    ou sinon comment puis-je faire avec les intents pour que l'activity reste en background ?

    Merci d'avance !

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui c'est possible, mais certainement pas "directement"

    Pour une bonne raison: l'activité initiale a peut-être été détruite par le système entre temps...

    Pour cela il faut utiliser le mécanisme des:
    startActivityForResult();

    InfoActivity (je te consille de transformer le adddrink privé en fonction onAddDrink() de l'activité, et d'appeler celle-ci depuis le bouton, ca te permettra de trouver pas mal de bugs):

    (PSEUDO-CODE)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    startActivityForResult(intent,CODE_RETOUR);
    ....
     
    public void onActivityResult(int code, Intent result)
    {
        if (code == CODE_RETOUR) {
           if (result is success) {
              ... result.getExtra....
           }
        } else
             super.onActivityResult(code,result);
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    merci pour ta réponse nicroman

    j'ai transformer ma procédure adddrink et fonction mais
    je me demandais quand je fait :

    startActivityForResult(intent);

    ou startActivity(intent);

    l'activité s'affiche et je perds mais onglet (tabs) que j'ai créer dans
    mon activité de départ (elle est peut-être détruite) dois-je refaire les onglet ?

    ensuite l'activity (InfoActivity) semble être nouvelle et non celle là afficher pas mes tabs. est-ce qu'il pourrais y avoir un problème d'héritage ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    serait-il possible de mettre des listener sur Tab ?

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Haaaaa mais tu veux dire passer d'un tab à un autre ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Haaaaa mais tu veux dire passer d'un tab à un autre ?
    Salut !

    pour passer d'une tab à une autre j'ai implémenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public void onTabChanged(String tabName) {
        if(tabName.equals("Info")) {
            //do something
        	Toast.makeText(getApplicationContext(),"tabinfo",Toast.LENGTH_LONG).show(); 
     
        }
        else if(tabName.equals("Result")) {
     
            //do something
        	Toast.makeText(getApplicationContext(),"tabresult",Toast.LENGTH_LONG).show();
     
        }
        else if(tabName.equals("Setting")) {
     
            //do something
        	Toast.makeText(getApplicationContext(),"tabsetting",Toast.LENGTH_LONG).show();
        }
     
    }
    mais je suis incapable de pousser mais valeurs et updater mais autre activity sans perdre mais tabs .

Discussions similaires

  1. AlertDialog affiché dans une autre Activity
    Par gilloddon dans le forum Android
    Réponses: 1
    Dernier message: 10/06/2012, 10h38
  2. Charger ProgressBar dans une autre Activity
    Par Raz-X dans le forum Android
    Réponses: 3
    Dernier message: 23/11/2011, 16h48
  3. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  4. Réponses: 4
    Dernier message: 01/06/2007, 13h54
  5. Activation et suppression de références dans une autre base
    Par Steph38GRE dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/02/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo