2012-06-09 9 views
5

Puedo almacenar el valor en una variable ahora quiero pasar esa variable a fragmento.Cómo pasar los datos entre actividad a fragmento con intención en Android

Con el siguiente código puedo cargar fragmentos.

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); 

} 
} 

(Aquí cargar fragmento utilizando la página XML) itemname

La salida se divide en en 2 ventanas uno para extenderse por listfragment (por listview). Uno de los fragmentos

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 en esta clase itemname quiero pasar Fragment2.class.

+0

¿Cuál es exactamente tu problema? Por favor describa que pasa cuando ejecuta su código? ¿Le da un error? Si es así, publique el logcat? Si no, ¿cómo difiere el comportamiento de lo que quieres? –

+0

Además, publique sus diseños XML. –

Respuesta

5

Utilice el paquete proporcionado en uno de los fragment constructors, y entonces usted debería ser capaz de recuperar el Bundle haciendo derecho donde desea en onCreateView()

Ejemplo:

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

Luego, en el fragmento:

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

por favor me pueden dar un código de muestra – naveen

+0

Listo. Necesita crear una instancia de su Fragmento utilizando este método o proporcionando su propio constructor estático (aunque este último es tabú). – hwrdprkns

+0

almacené el valor del nombre del elemento en esta clase AndroidListFragmentActivity .please vea mycode cambie el código de acuerdo con mi código porque soy más nuevo de fragments.please help me YourFragment.instantiate (context, "fragName", yourBundleWithValue); cambiar la línea de acuerdo con mi código. – naveen

-1

usted necesita usar la FragmentManager para mostrar que r Fragment.

+1

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación. – infused

+0

@infused Este es un problema XY. El OP ya usa 'setArguments()' y 'getArguments()', por lo que el motivo por el que no ve el fragmento mostrado es porque no está usando 'FragmentManager' para mostrarlo. –

+0

@infused Y acabo de notar que esta pregunta tiene dos años ... –

Cuestiones relacionadas