Domanda

Ciò accade solo quando si utilizza la libreria di compatibilità per i dispositivi pre-3.0

Sto ricevendo un errore che non riesco a definire. Ho un'attività con un elenco e un frammento standard. È proprio come l'esempio fornito nella sezione Developer della Guida Dev Android.

Sottoclasse ListFragment (nessuna funzione sovrascritta)

public class ItemListFragment extends ListFragment

Attività principale

public class ItemViewerActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_viewer);
    }
}

Layout XML per Mainttività

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal">
  <fragment class="org.example.ItemListFragment"
    android:id="@+id/item_list_fragment"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1" />
  <FrameLayout
    android:id="@+id/item_info_frame"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1" />
</LinearLayout>

Messaggio di errore da Logcat

Errore/AndroidRuntime: causato da: java.lang.classcastException: org.example.itemlistfragment non può essere lanciato su Android.App.Fragment

È stato utile?

Soluzione

Dopo un po 'di googling serio, ho trovato un articolo che ha sottolineato un bel bocconcino. Quando si utilizza la libreria di compatibilità, le tue attività che utilizzano frammenti devono estendere la frammentazione. Una volta che l'ho fatto, l'errore non si è più presentato.

Altri suggerimenti

Per me il problema era che avevo dimenticato di cambiare il manifest. Seguendo il suggerimento del tutorial, ho convertito la mia attività in un frammento e ho fatto un'attività di conchiglia per chiamarla. Il mio manifest indicava ancora la classe di frammenti che portava a un'eccezione del cast di classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top