Si usted tiene un fragmento de clase interna como:
public class SomethingFragment extends Fragment {
public static final class TypeFragment extends BaseFragment
{
public static Fragment newInstance()
{
return new TypeFragment();
}
private View mRootView;
private ListView mListView;
/**
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
* android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_category_list, container, false);
mListView = (ListView) mRootView.findViewById(R.id.fragment_listview);
return mRootView;
}
}
}
Asegúrese de que su clasificación es pública cuando el FragmentActivity intenta reiniciar el fragmento que no la llama de la clase concreta que va a tramitar de la FragmentActivity abstracta, y si su clase interna Fragment es privada, Activity no hace referencia a onSaveState, onRestoreState, initialise, etc.
private
a public
¡Solucionado para mí!
Actualización:
Tenga una mirada en https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/app/Fragment.java
El método instantiate
llama newInstance()
al intentar restaurar la Fragment
desde un estado guardado (en el que el fragmento fue completamente destruido).
El método newInstance
requiere que la clase sea de acceso público, por lo que cuando se define como una clase interna, significa que tiene que ser public
y static
cuando corresponda.
Espero que esto aclare algunas preguntas futuras.
¿cómo se carga el fragmento en el contenedor? A través de diseño XML o en código? No he probado el primero, pero no he tenido problemas con las clases estáticas de fragmentos internos con este último. Por cierto, estoy usando v1 de la librería de compatibilidad. – PJL
tengo un diseño con el fragmento que contiene obviamente la etiqueta junto con el nombre de la clase interna. –
Necronet
¿ha mirado el ejemplo de FragmentLayoutSupport en demostraciones de API? Hace referencia a una clase de fragmentos internos estáticos a través de: **
PJL