Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25

    [android] Problema con gli INTENT

    Salve

    stavo provando a fare una semplice applicazione che partendo da un activityA invia dei dati ad un activityB. I dati elaborati dall'activityB vengono inviati all'activityC. Quindi ci sarà un continuo rimbalzo dei dati tra l'activityB e l'activityC finchè non si verifica una condizione che farà tornare all'activityA iniziale.

    Il mio problema è che facendo ogni volta startActivity() mi crea delle nuove istanze e non usa quelle inizialmente create che man mano dovranno aggiornare i dati.

  2. #2
    ciao!

    sinceramente non ho capito bene quale sia il tuo problema.
    di preciso che intendi qui?
    codice:
    Il mio problema è che facendo ogni volta startActivity() mi crea  delle  nuove istanze e non usa quelle inizialmente create che man mano dovranno  aggiornare i dati.
    ma soprattutto dovresti spiegare meglio cosa dovresti ottenere, perchè da come la racconti sembra tutto un pò complesso....

    PS: la sezione giusta era Java!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25
    Allora intendo questo insieme di righe di codice, che poi per passare dall'activityC all'activityB è speculare. Il problema è che poichè avvengono più passaggi tra queste 2 activity, vengono create nuove istanza e non vengono usate le prime ad essere create.
    codice:
    Intent myIntent = newIntent(activityB.this,activityC.class);
    myIntent.putExtra("firstKeyName","FirstKeyValue");
    myIntent.putExtra("secondKeyName","SecondKeyValue");
    startActivity(myIntent);
    mi servirebbe qualcosa per richiamare l'activity precedentemente create e non di crearne una nuova ogni volta.
    Ultima modifica di abbobba; 04-08-2015 a 09:54

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La programmazione Android usa il linguaggio Java... quindi le discussioni vanno poste nel forum "Java".

    Sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    a parte che non capisco xchè tutte queste activity se sono speculari.
    poi continuo a non capire cosa intendi per le prime ad essere create.

    cmq, se vuoi "terminare" una activity prova a guardare agli eventi onResume e onDestroy.
    questi gli eventi relativi al lifecycle delle activity:
    codice:
    public class ExampleActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // The activity is being created.
        }
        @Override
        protected void onStart() {
            super.onStart();
            // The activity is about to become visible.
        }
        @Override
        protected void onResume() {
            super.onResume();
            // The activity has become visible (it is now "resumed").
        }
        @Override
        protected void onPause() {
            super.onPause();
            // Another activity is taking focus (this activity is about to be "paused").
        }
        @Override
        protected void onStop() {
            super.onStop();
            // The activity is no longer visible (it is now "stopped")
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            // The activity is about to be destroyed.
        }
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25
    E' un esercizio per capire l'uso degli intent, poichè sto iniziando ora ad approcciare lo sviluppo mobile.
    Ti spiego l'esercizio. Allora nell'activityA inserisco il numero massimo di "rimbalzi" che ci saranno tra l'activityB e l'activityC, una volta superato tale numero dovrò tornare nell'activityA. In pratica tra l'activityB e l'activityC ci dovrebbe essere bisogno semplicemente dell'incremento di una variabile ogni qualvolta si preme il bottone che permette il passaggio da B e C finchè non si supera il numero inzialmente inserito.

  7. #7
    Quote Originariamente inviata da abbobba Visualizza il messaggio
    E' un esercizio per capire l'uso degli intent, poichè sto iniziando ora ad approcciare lo sviluppo mobile.
    Ti spiego l'esercizio. Allora nell'activityA inserisco il numero massimo di "rimbalzi" che ci saranno tra l'activityB e l'activityC, una volta superato tale numero dovrò tornare nell'activityA. In pratica tra l'activityB e l'activityC ci dovrebbe essere bisogno semplicemente dell'incremento di una variabile ogni qualvolta si preme il bottone che permette il passaggio da B e C finchè non si supera il numero inzialmente inserito.
    ok, e dove riscontri di preciso il problema?
    ti sei studiato il ciclo di vita delle activity di android?
    nel tuo caso specifico è importante!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25
    il problema credo che sia nel blocco di codice postato precedentemente in quanto esso viene richiamato ogni qualvolta si passi tra B e C quindi penso che crea ogni volta delle nuove istanze delle activity e non quelle precedentemente create. A quanto ho capito il problema ha a che fare con il launchmode del manifest. Tu che mi consigli?
    Un'altra domanda è possibile vedere in runtime il back stack delle applicazioni di android

  9. #9
    Quote Originariamente inviata da abbobba Visualizza il messaggio
    il problema credo che sia nel blocco di codice postato precedentemente in quanto esso viene richiamato ogni qualvolta si passi tra B e C quindi penso che crea ogni volta delle nuove istanze delle activity e non quelle precedentemente create. A quanto ho capito il problema ha a che fare con il launchmode del manifest. Tu che mi consigli?
    Un'altra domanda è possibile vedere in runtime il back stack delle applicazioni di android
    il pezzo di codice che hai postato è giusto di per se.
    ma evidentemente ha un comportamento che non ti aspetti (presumo).
    ma, sarò scemo io, continuo a non capire dove sta il problema.
    cioè, qual'è il comportamento che dovresti avere?
    cosa invece succede?

    cmq, se il problema è che devi "terminare" una activity quando esci, allora ti invito di nuovo a guardare il codice postato prima.
    nello scpecifico nell'evento onDestroy.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2013
    Messaggi
    25
    ciao, rispondo ora perchè ho avuto da fare. Allora sono riuscito a risolvere il problema impostando nel manifest, nel tag che riguarda ogni activity questo blocco:
    codice:
    android:launchMode="singleInstance"
    a quanto ho letto in rete ogni volta che si arriva a questo punto :
    codice:
    Intent myIntent = newIntent(activityB.this,activityC.class);
    myIntent.putExtra("firstKeyName","FirstKeyValue");
    myIntent.putExtra("secondKeyName","SecondKeyValue");
    startActivity(myIntent);


    invece di crearmi una nuova instanza dell'activityC, verifiche se nello stack è già presente un'istanza e eventualmente l'avvia. Quindi se si verifica ciò al posto di iniziare dal metodo onCreate() inizia da:
    codice:
     
    protected void onNewIntent (Intent intent) {        
            super.onNewIntent(intent);
            setIntent(intent);
            Log.i(TAG, "onNewIntent");
            processExtraData();
        }


    ora al di la del fatto che tutto funziona, la cosa che non riesco a capire è cosa fa esattemente onNewIntent(
    Intent intent) in particolare il parametro intent a chi si riferisce? e setIntent(intent) cosa fa?





Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.