CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Q.dino con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 32 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 4 su 4
Discussione:

Passaggio dati tra activity (la principale e una activity contenuta in un tab della p

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Mar 2009
    Località
    Milano
    Messaggi
    103
    Smartphone
    San Francisco

    Ringraziamenti
    3
    Ringraziato 3 volte in 2 Posts
    Predefinito

    Passaggio dati tra activity (la principale e una activity contenuta in un tab della p

    Ciao,
    sto sviluppando un'applicazione che nella Activity principale (home.class) ha due tab.
    Nel primo tab includo un'altra Activity con una mappa di Google Maps (tabmap.class).

    Layout prima activity:
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TabHost
            android:id="@android:id/tabhost"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginTop="5dip">
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
                <TabWidget
                    android:id="@android:id/tabs"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="@null"
                    android:layout_marginLeft="-2dp"
                    android:layout_marginRight="-2dp" />
                    <FrameLayout
    		            android:id="@android:id/tabcontent"
    		            android:layout_width="fill_parent"
    		            android:layout_height="fill_parent">
    		            <TextView 
    		                android:id="@+id/textview1"
    		                android:layout_width="fill_parent"
    		                android:layout_height="fill_parent" />
    		            <TextView 
    		                android:id="@+id/textview2"
    		                android:layout_width="fill_parent"
    		                android:layout_height="fill_parent" />
    		        </FrameLayout>
            </LinearLayout>
        </TabHost>
    </LinearLayout>
    Inserisco la mappa nel tab da codice nell'activity principale:
    codice:
    ...
    	TabHost mTabHost = getTabHost();
            TabSpec tabSpec = mTabHost.newTabSpec("tab_test1");
            tabSpec.setIndicator("Mappa");
    	//creo l'intent che punta all'activity contenente la mappa
            Intent i = new Intent(this.getApplicationContext(), tabmap.class);
            tabSpec.setContent(i);
    	//aggiungo il secondo tab che contiene una textview
            mTabHost.addTab(tabSpec);
            mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Secondo tab").setContent(R.id.textview2));
            mTabHost.setCurrentTab(0);
    ...
    Vorrei passare dati dall'Activity della Mappa(tabmap.class) contenuta nel primo tab(tab_test1) al secondo tab(tab_test2) dell'Activity

    principale(home.class). Nello specifico adesso vorrei scrivere sulla textview (R.id.textview2) contenuta nel secondo tab, però più in

    generale mi interesserebbe capire come passare i dati all'activity.
    Posso referenziare direttamente l'oggetto? Posso passare dati da una activity ad un'altra senza lasciare l'activity corrente?

    Stavo pensando a qualcosa del genere
    codice:
    //su tabmap.class
    	Intent i = new Intent(this.getApplicationContext(), home.class);
    	i.putExtra("chiave", "valore");
    Ma poi come posso far si che home.class riceva le informazioni ed esegua un metodo che popoli R.id.textview2, il tutto rimanendo sul tab

    della mappa?

    Mi sono capito?
    Riuscite a darmi una mano?
    Grazie mille e buona giornata,

    Marco

  2.  
  3. #2
    Baby Droid L'avatar di durykiller


    Registrato dal
    Sep 2010
    Messaggi
    6

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    nella seconda Activity durante l'OnCreate():


  4. #3
    Androidiano


    Registrato dal
    Mar 2009
    Località
    Milano
    Messaggi
    103
    Smartphone
    San Francisco

    Ringraziamenti
    3
    Ringraziato 3 volte in 2 Posts
    Predefinito

    Ciao,
    grazie per la risposta.
    Mi viene un dubbio: nel caso specifico la seconda activity è proprio quella che mi ha chiamato la prima, quindi l'oncreate() è stato già eseguito.

    Capito come passare i dati... come posso dirgli però di eseguire un metodo che gestisce quei dati?
    I dati sulla seconda activity li ho disponibili anche se non ho fatto lo startactivity dopo il putextra?

  5. #4
    Baby Droid L'avatar di durykiller


    Registrato dal
    Sep 2010
    Messaggi
    6

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Dunque:
    _il putExtra() lo fai (nell'Activity chiamante) dopo che hai creato l'intent per l'activity da chiamare
    _i dati dall'activity chiamata li puoi prendere solo se è stata chiamata con StartActivity() (dalla chiamante)
    _se vuoi che l'Activity chiamata restituisca dati alla chiamante devi usare StartActivityForResult() e gestire l'evento di ritorno (mi pare OnActivityResult()) dalla Chiamante
    _Se vuoi passare dati interattivamente devi studiarti gli Handler. Devi creare una funzione Handler che passi all'Activity chiamata la quale utilizzerà per mandare messaggi alla chiamante mentre lavora.

    L'argomento è vasto ma spero di averti dato le dritte giuste.
    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy