/* $Id: $ */ package com.oreilly.demo.android.pa.contactviewer; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * ContactDetailFragment */ public class ContactDetailFragment extends Fragment { /** * @return a new ContactDetailFragment */ public static final ContactDetailFragment newInstance() { return newInstance(null, null); } /** * @param contactId * @param contact * @return a new ContactDetailFragment */ public static final ContactDetailFragment newInstance( String contactId, String contact) { Bundle init = new Bundle(); init.putString(ContactDetails.TAG_ID, contactId); init.putString(ContactDetails.TAG_CONTACT, contact); return newInstance(init); } /** * @param init * @return a new ContactDetailFragment */ public static final ContactDetailFragment newInstance(Bundle init) { ContactDetailFragment frag = new ContactDetailFragment(); frag.setArguments(init); return frag; } private ContactDetails details; /** @see android.support.v4.app.Fragment#onCreate(android.os.Bundle) */ @Override public void onCreate(Bundle state) { super.onCreate(state); if (null == state) { state = getArguments(); } details = new ContactDetails(state); details.createLoaders(getActivity()); } /** @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 b) { View view = inflater.inflate( R.layout.contact_detail, container, false); //!!! this is important details.setView(view); details.populateContact(); for (ContactDetailsLoader loader : details.initLoaders(getLoaderManager()).values()) { loader.populateFields(); } return view; } /** @see android.support.v4.app.Fragment#onSaveInstanceState(android.os.Bundle) */ @Override public void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); details.saveToBundle(state); } }