Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo utilizar la biblioteca de soporte de Android correctamente

Estoy trabajando mi camino a través de Android Professional 4 Desarrollo de aplicaciones. Capítulo 4 modifica la aplicación Lista de tareas para utilizar fragmentos, pero estoy tratando de probar en un dispositivo de pan de jengibre. Hay mención en el libro de usar bibliotecas de soporte para permitir el uso de Android v3 o v4 características en un dispositivo de versión inferior, pero no se cubre muy bien.

Estoy encontrando un problema específicamente con:

// Get references to the Fragments android.app.FragmentManager fm = getFragmentManager(); ToDoListFragment todoListFragment = (ToDoListFragment) fm.findFragmentById( R.id.ToDoListFragment ); 

Tengo estas importaciones en la parte superior: import android.support.v4.app.FragmentManager; Import android.support.v4.app.ListFragment;

Pero lint advierte en la línea "ToDoListFragment todoListFragment = (ToDoListFragment)": no se puede emitir de Fragmento a ToDoListFragment

En mi clase ToDoListFragment, tengo:

  import android.support.v4.app.ListFragment; public class ToDoListFragment extends ListFragment { } 

Esto es casi literal del libro, excepto para el cambio de utilizar la biblioteca de soporte.

No estoy claro cómo conseguir que este código funcione correctamente utilizando la biblioteca de soporte v4. Pido disculpas por adelantado si esto no es suficiente información. Todavía estoy aprendiendo esto, y estoy más familiarizado con C / C ++ que Java. Si no utilizo la biblioteca de soporte, el código se desarrolla bien y se ejecutará en un dispositivo Ice Cream Sandwich, pero también me gustaría que funcionara en dispositivos de nivel inferior.

2 Solutions collect form web for “Cómo utilizar la biblioteca de soporte de Android correctamente”

Debe utilizar getSupportFragmentManager() lugar de getFragmentManager()

 android.support.v4.app.FragmentManager fm = getSupportFragmentManager() 

Quería hacer lo mismo con este ejemplo. Existen varios lugares donde se requieren modificaciones para que funcione con la biblioteca de soporte. Aquí está mi archivo java completo con los cambios destacados en los comentarios:

 package com.paad.todolist; import java.util.ArrayList; import android.support.v4.app.FragmentActivity; // Because we're using the support library // version of fragments, the import has to be // FragmentActivity rather than Activity import android.support.v4.app.FragmentManager; // Support version of Fragment Manager import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; // because we're using the support library version of fragments, the class has to extend the // FragmentActivity superclass rather than the more usual Activity superclass public class ToDoListActivity extends FragmentActivity implements NewItemFragment.OnNewItemAddedListener { // logging tag private static final String TAG = "ToDoListActivity"; // create an array adaptor ready to bind the array to the list view private ArrayAdapter<String> aa; // set up array list to hold the ToDo items private ArrayList<String> todoItems; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "The onCreate method has started"); // inflate the view setContentView(R.layout.activity_to_do_list); // get references to the fragments // FragmentManager fm = getFragmentManager(); this won't work with the support library version FragmentManager fm = getSupportFragmentManager(); // this is the equivalent for support library ToDoListFragment todoListFragment = (ToDoListFragment)fm.findFragmentById(R.id.ToDoListFragment); // Create the array list of to do items todoItems = new ArrayList<String>(); // Create the array adapter to bind the array to the listview aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems); // bind the array adapter to the list view todoListFragment.setListAdapter(aa); } // implement the listener... It adds the received string to the array list // then notifies the array adapter of the dataset change public void onNewItemAdded(String newItem) { todoItems.add(newItem); aa.notifyDataSetChanged(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.