2012-06-09 9 views
5

Posso memorizzare il valore in una variabile ora voglio passare quella variabile in frammento.Come passare i dati tra le attività al frammento utilizzando l'intento in Android

Con il seguente codice sono in grado di caricare i frammenti.

public class AndroidListFragmentActivity extends Activity { 
Fragment2 f2; 
public static String itemname; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apetiserfragement); 
    itemname=getIntent().getStringExtra("itemname"); 
    Bundle args=new Bundle(); 
    args.putString("itemname", itemname); 
    f2=new Fragment2(); 
    f2.setArguments(args); 

} 
} 

(Qui caricare frammento usando pagina XML) itemname

L'uscita è diviso in 2 finestre in uno per estende per listfragment (per listview). Uno per frammenti

Fragment2.xml

public class Fragment2 extends Fragment { 
String itemname; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    System.out.println(getArguments().getString("itemname")); 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 

    } 

AndroidListFragmentActivity in questa classe itemname voglio passare Fragment2.class.

+0

Qual è esattamente il tuo problema? Si prega di descrivere cosa succede quando si esegue il codice? Hai un errore? In tal caso, pubblica il logcat? Se no, in che modo il comportamento differisce da quello che vuoi? –

+0

Inoltre, per favore pubblica i tuoi layout XML. –

risposta

5

Utilizzare il bundle fornito in una delle fragment constructors, e allora si dovrebbe essere in grado di recuperare il Bundle facendo proprio dove si vuole in onCreateView()

Esempio:

YourFragment.instantiate(context,"fragName",yourBundleWithValue); 

Poi, in il vostro frammento:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    getArguments().getStringValue("name"); //Returns your string value 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 
+1

Si prega di fornire un codice di esempio per me – naveen

+0

Fatto. È necessario creare un'istanza del frammento utilizzando questo metodo o fornendo il proprio costruttore statico (anche se quest'ultimo è un tabù). – hwrdprkns

+0

ho memorizzato il valore itemname in questa classe AndroidListFragmentActivity .piace vedere mycode cambiare il codice in base al mio codice perché sono più recente di fragments.please aiutami YourFragment.instantiate (context, "fragName", yourBundleWithValue); cambia linea in base al mio codice. – naveen

-1

È necessario utilizzare il FragmentManager per visualizzare voi r Fragment.

+1

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. – infused

+0

@infused Questo è un problema XY. L'OP usa già 'setArguments()' e 'getArguments()', quindi il motivo per cui non vede il frammento visualizzato è perché non sta usando 'FragmentManager' per visualizzarlo. –

+0

@infused E ho appena notato che questa domanda ha due anni ... –

Problemi correlati