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 28/04/14, 15:55:46
Array

[xs_avatar]
Ivanicop Ivanicop no está en línea
Miembro del foro
 
Fecha de registro: jun 2011
Localización: Murcia
Mensajes: 488
Modelo de smartphone: MotoX + LG G Watch | BQ Aquaris E5HD
Tu operador: ONO
Llamar a ListFragment desde Fragment

Hola! Tengo este TabsPagerAdapter:
Código:
public class TabsPagerAdapter extends FragmentPagerAdapter {

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
            case 0:
                // Top Rated fragment activity
                return new InformacionFragment();
            case 1:
                // Games fragment activity
                return new ProductosFragment();
            case 2:
                // Movies fragment activity
                return new MoviesFragment();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }

}
Que solo me deja llamar clases extendidas a Fragment, por lo que no puedo llamar a una clase ListFragment, asi que tengo un Fragment normal en el que quiero llamar al ListFragment, pero no se como hacerlo.

Este es el Fragment donde quiero incluir la ListFragment:
Código:
public class ProductosFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_productos, container, false);

                                                        }
                                                }
Y esta es la ListFragment que tiene que aparecer en el Fragment:
Código:
public class ConjuntaFragment extends ListFragment{

    private ProgressDialog pDialog;

    // JSON Node names
    private static final String TAG_PRODUCTOS = "productos";
    private static final String TAG_ID_LO = "id_lo";
    private static final String TAG_ID_PRODUCTO = "idProducto";
    private static final String TAG_NOMBRE_PRODUCTO = "NombreProducto";

    // contacts JSONArray
    JSONArray productos = null;

    // Hashmap for ListView
    ArrayList<HashMap<String, String>> productosList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // getting intent data
        Intent inem = getActivity().getIntent();
        String id_lo = inem.getStringExtra(TAG_ID_LO);
        super.onCreate(savedInstanceState);
        getActivity().setContentView(R.layout.fragment_productos);

        new HttpAsyncTask().execute("http://www.forotek.net/androidapp/conjunta.php?id="+id_lo);

        productosList = new ArrayList<HashMap<String, String>>();

        ListView lv2 = getListView();
        // Listview on item click listener
        lv2.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // getting values from selected ListItem
                String id_producto = ((TextView) view.findViewById(R.id.id_producto))
                        .getText().toString();

                // Starting single contact activity
                Intent in2 = new Intent(getActivity().getApplicationContext(),
                        ConjuntaFragment.class);
                in2.putExtra(TAG_ID_PRODUCTO, id_producto);
                startActivity(in2);

            }
        });

        // Calling async task to get json
        new GetProductos().execute();

        return super.onCreateView(inflater,container,savedInstanceState);
    }

Última edición por Ivanicop Día 28/04/14 a las 20:41:56.
Responder Con Cita


  #2  
Viejo 28/04/14, 16:28:50
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
ListFragment hereda de Fragment, así que puedes usarlo en el FragmentPagerAdapter perfectamente.

Comprueba que si estás usando el Fragment de Android Support V4 no estés intentando usar al ListFragment de android.app, o viceversa.
Responder Con Cita
  #3  
Viejo 28/04/14, 20:35:24
Array

[xs_avatar]
Ivanicop Ivanicop no está en línea
Miembro del foro
 
Fecha de registro: jun 2011
Localización: Murcia
Mensajes: 488
Modelo de smartphone: MotoX + LG G Watch | BQ Aquaris E5HD
Tu operador: ONO
Anda responde un paisano! jaja

Muchisimas gracias, ya me deja añadirlo al TabLister, era lo de los import, los he borrado y puesto los de Android Support y me ha dejado

Ahora tengo un problema y es que me da FC al cargar la FragmentActivity, seguramente por el ListFragment, ¿podrias decirme si tiene algo raro? http://pastebin.com/AXuXWvmd
Responder Con Cita
  #4  
Viejo 28/04/14, 22:17: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
Veo bastantes cosas raras, como por ejemplo que modifiques el ContentView de la Activity desde el Fragment:

getActivity().setContentView(R.layout.zfragment_co njunta);

Y luego también acceder a esto desde el onCreate del Fragment:

ListView lv2 = getListView();

En los Fragment su contenido no existe hasta que se ejecuta el onCreateView, que se ejecuta justo después del onCreate, y no será hasta ese momento donde tendrás accesible el getListView. Realmente justo después del onCreateView, que es el onActivityCreated.

Luego, si estás usando un ListFragment es porque no quieres establecerle un Layout y quieres usar uno tipo lista por defecto, si no para eso utilizarías un Fragment y accederías al ListView con findViewById.

Convierte el método a onActivityCreated, quita esta línea:

getActivity().setContentView(R.layout.zfragment_co njunta);

Y vuelve a probar.
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: 13:53:42 (GMT +1)



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

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