Estoy convirtiendo una aplicación existente a la API de Fragments utilizando la biblioteca de compatibilidad. He leído que se supone que debes actualizar las clases que amplían la Actividad para usar ahora FragmentActivity. Esto está bien para la mayoría de los casos, pero ¿qué pasa con las clases que extienden ListActivity o MapActivity? ¿Cuál es la forma preferida de manejar esto? Esperaba que hubiera ListFragmentActivity o algo así, pero no veo ninguno.¿Qué hacer con ListActivity/MapActivity al convertir a Fragments utilizando la biblioteca de compatibilidad?
Respuesta
Hay una ListFragment: http://developer.android.com/reference/android/app/ListFragment.html
Para MapActivity, por desgracia, tendrá que seguir utilizándola; no hay Fragmento API para eso.
Al menos por el ListActivity Puede cambiarlo a FragmentActivity (Aún implementar OnItemCLickListener) y reemplazar:
lv = getListView() a LV = (Lista) findViewById (R.id.your_list_view_id)
y
setListAdapter (favAdapter) para lv.setAdapter (adaptador)
Si el ID de su ListView es '@ android: id/list', puede hacer esto: 'ListView lv = (ListView) findViewById (android.R.id.list);'. También querrás reemplazar 'onListItemClick()' con 'lv.setOnItemClickListener (new ListView.OnItemClickListener() {...' – bmaupin
Comenté esto también con la respuesta de @bmaupin, pero ¿podemos simplemente hacer los métodos? GetListView() "que devuelve" (ListView) findViewById (R.id.your_list_view_id) "y" setListAdapter (adaptador) "que hace" getListView(). setAdapter (adapter) "para encargarse de esas cosas o ¿no funcionaría? – ankushg
@Ankush también funcionaría. Usted buscará en la jerarquía de vistas cada vez que llame a getListView(), que es marginalmente menos eficiente. –
Esto es lo que hago cuando la conversión de un ListActivity a los fragmentos de API:
Reemplazar
lv = getListView();
conlv = (ListView) findViewById(android.R.id.list);
Reemplazar
setListAdapter(adapter);
conlv.setAdapter(adapter);
Si ha anulado
onListItemClick()
, reemplazarlo conlv.setOnItemClickListener(new ListView.OnItemClickListener() {...
Vas a tener que establecer la vista vacía (espectáculos cuando no hay resultados) manualmente:
lv.setEmptyView(findViewById(android.R.id.empty));
Si estoy usando CursorLoader, que normalmente poner esto en onLoadFinished():
// if there are no results if (data.getCount() == 0) { // let the user know lv.setEmptyView(findViewById(android.R.id.empty)); } else { // otherwise clear it, so it won't flash in between cursor loads lv.setEmptyView(null); }
Hablando de cursor loaders, también voy a convertir la actividad de usar CursorLoader si no está ya en ese momento
¿Sería suficiente agregar un nuevo método getListView() a la FragmentActivity que devolvió ListView? y luego agregue otro método setListAdapter (adaptador) que llamó a setAdapter (adaptador) en esa actividad? – ankushg
Su solución funcionó a la perfección, thx 4 compartirlo! – vinidog
@Ankush que funcionaría también. Usted será searchi ng la jerarquía de vista cada vez que llama a getListView(), que es marginalmente menos eficiente. –
Es posible convertir ListActivity
en FragmentActivity
.
- Extender
FragmentActivity
en lugar deListActivity
- Crear
res/layout/your_activity.xml
con un vacíoListView
conandroid:id="@+id/your_activity_list_view"
- En el
onCreate
de su actividad,setContentView(R.layout.your_activity);
- también cambiar la
onCreate
de su actividad para recuperar explícitamente laListView
que acaba inflado
.
ListView lv = (ListView) findViewById(R.id.your_activity_list_view);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
- 1. C++ Compatibilidad de biblioteca
- 2. ¿Cómo puedo convertir XML a un objeto utilizando Spring MVC 3.0 al hacer la solicitud REST
- 3. Qué debo hacer para adaptar mi aplicación a iOS 5.0 manteniendo la compatibilidad con iOS 4
- 4. Cómo agregar IntelliSense Tooltip Compatibilidad con la biblioteca (dll)
- 5. VerifyError, o utilizando overridePendingTransition manteniendo la compatibilidad?
- 6. .NET: con respecto a AssemblyVersion, ¿qué define la compatibilidad binaria?
- 7. Convertir hojas de cálculo de Excel a HTML utilizando la biblioteca de POI de Apache
- 8. Convertir una solicitud de POST curl a Python solo utilizando la biblioteca estándar
- 9. Convertir biblioteca C# al proyecto MSTest
- 10. ViewFlipper vs Fragments
- 11. Android Fragments and animation
- 12. Convertir el carácter HTML a texto utilizando la biblioteca estándar de Java
- 13. ¿Qué base de datos incrustada tiene máxima compatibilidad con SQL y compatibilidad con concurrencia?
- 14. ClassCastException al convertir a la misma clase
- 15. Biblioteca PHP para convertir JSON a CSV?
- 16. Cómo agregar compatibilidad con MFC al proyecto Win32 C++ existente?
- 17. Convertir el proyecto .exe a la biblioteca de clases
- 18. Convertir SVG a PNG transparente con antialiasing, utilizando ImageMagick
- 19. No se pudo resolver el error de la superclase al hacer referencia a la biblioteca .jar
- 20. ¿Qué base de datos tiene la mejor compatibilidad con XML?
- 21. Compatibilidad con JPEG 2000 en C# .NET
- 22. Problema con la transparencia al convertir UIView a UIImage
- 23. ClassCastException al convertir de cadena a objeto ... ¿por qué?
- 24. ¿Convertir una biblioteca estática a una biblioteca compartida?
- 25. ¿Qué puede hacer el "Objeto" en la Biblioteca de objetos de Storyboard?
- 26. IE8 forzado al modo de compatibilidad
- 27. circumvent ERROR ¿Cómo convertir la estructura circular a JSON al hacer JSON.stringify()?
- 28. NavigationBar List Navigation Fragments Overlapping
- 29. Convertir archivos de mapa de bits en JPEG utilizando la biblioteca GD en PHP
- 30. Forzar IE9 en el modo de compatibilidad utilizando javascript
Gracias, pero ListFragment no es un FragmentActivity, entonces estoy teniendo problemas con mi estructura de herencia que espera una FragmentActivity. Cuanto más trabajo en esto, más parece que necesitará una reescritura total, no solo actualizar los tipos de clases y los ajustes menores como Google afirmó. – CACuzcatlan
@CACuzcatlan: le invitamos a citar un enlace donde "Google" "reclamó" que todo lo que necesita es "simplemente actualizar tipos de clases y ajustes menores". Dicho esto, convertir una 'ListActivity' a' ListFragment' es bastante simple, más simple que la mayoría de las actividades-> migraciones de fragmentos, en mi humilde opinión. – CommonsWare
Lo siento, exageré. Debo decir que esa fue la impresión que tengo. – CACuzcatlan