Se si dispone di un frammento classe interna come:
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;
}
}
}
Assicurarsi che la qualificazione è pubblico quando il FragmentActivity cerca di iniziare nuovamente il frammento non chiama dalla classe concreta sarà gestirlo dal FragmentActivity astratto, e se la classe frammento interiore è privata la cui attività non ha alcun riferimento alla onSaveState, onRestoreState, inizializzare ecc ..
private
-public
fissata per me!
Aggiornamento:
Dai un'occhiata alla https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/app/Fragment.java
Il metodo instantiate
chiama newInstance()
quando si cerca di ripristinare il Fragment
da uno stato salvato (in cui il frammento è stato completamente distrutto).
Il metodo newInstance
richiede che la classe sia accessibile al pubblico, quindi, quando definita come classe interna, significa che deve essere public
e static
se necessario.
Spero che questo chiarisca alcune domande future.
fonte
2011-12-22 16:06:27
come viene caricato il frammento nel contenitore? Via layout XML o in codice? Non ho provato il primo ma non ho avuto problemi con le classi di frammenti interni statici con quest'ultimo. BTW sto usando la v1 della compat lib. – PJL
ho un layout con il frammento con contiene ovviamente il tag insieme al nome della classe interna. –
Necronet
hai esaminato l'esempio FragmentLayoutSupport nelle demo API? Riferisce una classe framment interna statica tramite: **
PJL