Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 20/05/15, 20:06:09
Array

[xs_avatar]
gonza28 gonza28 no está en línea
Desarrollador
 
Fecha de registro: feb 2012
Localización: INTERESA?
Mensajes: 4,191
Modelo de smartphone: Samsung Galaxy Note 4
Tu operador: Personal
Lanzar fragment.clas pasando parametros por intents

Hola.
Tengo un drawer en el cual voy a lanzar un solo fragment que se conecta a mi php.
Son como 5 0 6 opciones en el drawer que lanzará el mismo fragment pero con url y titulo distinto. La verdad estoy atascado. Necesitaria una mano de alguien con ganas de dar una mano. tengo el fragmento ..diria yo, casi preparado para recibir los parametros. pero no se como enviar los mismos a el.
Anoche estuve tratando de hacer un array string con los parametros titulo,url. con esto, al lanzar el fragment.class, se inyectan los daos. pero no me salio nada bien. Soy de madera para los arrays. Si en este punto alguien puede darme el empujón con un ejemplo,, se lo voy agradecer mucho. Voy a dejar el ejemplo hasta donde llegué y solo faltando los rllenados.
Pero si lguien me brinda una mano con los metodos put*() de la clase intent tambien seria bueno. En realidad necesito lograr esto por que voy a tener en otras pantalla con listas el mismo requerimiento. asi que necesito lograrlo para no estar creando muchos Fragments. La ide seria terminar lo que empecé por que seria mas facil. facil pero estoy en la lucha

FragmentHome.class

[PHP]public class FragmentHome extends Fragment {

ListView lista;
ArrayAdapter adaptador;
HttpURLConnection con;

public static FragmentHome newInstance(String URL){
FragmentHome mFragment = new FragmentHome();
Bundle mBundle = new Bundle();
mBundle.putString("URL", URL);
mFragment.setArguments(mBundle);
return mFragment;
}


@override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_blog, container, false);
lista = (ListView) rootView.findViewById(R.id.list);



try {
ConnectivityManager connMgr = (ConnectivityManager)getActivity()
.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected()) {
new JsonTask().
execute(
new URL("http://ejemplo/service.php"));
} else {
Toast.makeText(getActivity(), "Error de conección", Toast.LENGTH_SHORT).show();
}

} catch (MalformedURLException e) {
e.printStackTrace();
}



return rootView;
}[/PHP]

Lanzando el Fragment desde el drawer:

[PHP]ArrayList<DrawerItemData> items;
public NoDrawerHeader(ArrayList<DrawerItemData> items){
this.items = items;

}

@override
public void init(Bundle savedInstanceState) {

for (DrawerItemData item : items) {
Fragment fragment = FragmentHome.newInstance(item.URL);
this.addSection(newSection(item.titulo, fragment));
}
}
}[/PHP]

Items a Rellenar para enviar al FragmentHome

[PHP]public class DrawerItemData {

String titulo, URL;

public DrawerItemData(String titulo, String URL) {
this.titulo = titulo;
this.URL = URL;




}


}[/PHP]

Se que para algunos, les parecerá una pequeñez. Pero hasta el infimo detalle me puede ayudar, asi que por favor ayuda.

Muchas gracias.

EDITO.
La URL que está en el try y el titulo del FragmentHome es lo que necesito que se cambie en el momento de ejecución.
Así logro:
Que se lance siempre el mismo fragmento pero con el titulo y url seleccionada para que descargue los datos correspondientes.

Última edición por gonza28 Día 20/05/15 a las 21:12:00.
Responder Con Cita


  #2  
Viejo 20/05/15, 22:06:12
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Para pasar parámetros a un Fragment no necesitas usar Intents, de hecho un Fragment no sabe de Intents.

Un Fragment se puede decir que es una View especial (muy especial) dentro de tu Activity, que no se muestra hasta que no hagas el Replace con el FragmentManager.

Así que puedes pasarle parámetros de la manera tradicional que le pasarías parámetros a cualquier objeto.

Por ejemplo teniendo las variables globales dentro de FragmentHome:

String titulo;
String url;

Y tener el método:

public void setParametros(String titulo, String url) {
this.titulo = titulo;
this.url = url;
}

Y por último en tu newIntance tener:

public static FragmentHome newInstance(String URL, String Titulo){
FragmentHome mFragment = new FragmentHome();
mFragment.setParametros(Titulo,URL);
return mFragment;
}

Como ves, fácil, igual que con cualquier otro objeto de Java.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 03:18:40 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /