|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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;
}
}
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);
}
}
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. |
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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 |
|
#4
|
||||
|
||||
|
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. |
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||