Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El mtodo onStart coincide con el paso del fragment a primer plano, seguido de la llamada
almtodo onResume (mismo funcionamiento que para una actividad - vase el captulo Principios de
programacin - Ciclo de vida de una actividad).
Cuando un fragment pasa a estar inactivo, la llamada al mtodo onPause permite ejecutar las
acciones adecuadas (deshabilitar actualizaciones, listener...). Despus de esta llamada, se invoca
almtodo onStop (el fragmento deja de estar en primer plano).
2. Ejemplo
En el siguiente ejemplo, se crear una vista compuesta de dos secciones:
Aplicacin en modo vertical: compuesta por dos actividades. La primera representa la lista
de versiones de Android y la segunda representa la vista de detalles que se muestra cuando
el usuario hace clic en un elemento de la lista.
Aplicacin en modo apaisado: compuesta por una nica actividad pero con dos fragments.
En el momento en que el usuario hace clic en la lista que se encuentra en el primer fragment,
el segundo automticamente se actualizar con los detalles.
Para empezar, cree en la carpeta layout un archivo XML que represente la vista en modo
apaisado (vista compuesta de dos fragments).
<fragment
android:id="@+id/listFragment"
android:layout_width="150dip"
android:layout_height="match_parent"
class="com.eni.android.fragment.ListFragment" >
</fragment>
<fragment
android:id="@+id/detailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.eni.android.fragment.DetailFragment" >
</fragment>
</LinearLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayAdapter<String> adapter = new
ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
@Override
public void onListItemClick(ListView l, View v, int position,
long id) {
String item = (String) getListAdapter().getItem(position);
DetailFragment fragment = (DetailFragment)
getFragmentManager().findFragmentById(R.id.detailFragment);
if (fragment != null && fragment.isInLayout()) {
fragment.setText(item);
} else {
Intent intent = new
Intent(getActivity().getApplicationContext(),
DetailActivity.class);
intent.putExtra("value", item);
startActivity(intent);
}
Ahora, hay que implementar el fragment que sirve para mostrar los detalles:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.details,
container, false);
return view;
}
Una vez que se han realizado estos pasos, el modo apaisado estar correctamente implementado.
El siguiente paso consiste en implementar las interfaces y los tratamientos para el modo vertical. Para
ello, hay que crear la carpeta layout-port que contendr una segunda versin del archivomain.xml.
<fragment
android:id="@+id/listFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.eni.android.fragment.ListFragment" />
</LinearLayout>
En esta versin, el archivo se compone nicamente de un fragment (el que muestra la lista de
versiones de Android). Las diferencias entre el archivo main.xml en modo vertical y en modo
apaisado permiten identificar la orientacin en la inicializacin de la vista y, por lo tanto, adoptar el
comportamiento adecuado en funcin de cada caso.
Cree un archivo XML que represente la vista de detalles. Contendr el fragment que permite
mostrar los detalles de una versin de Android en modo vertical.
<fragment
android:id="@+id/detailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.eni.android.fragment.DetailFragment" />
</LinearLayout>
Finalmente, se han separado los dos fragments que se encontraban en el mismo archivo (modo
apaisado) en dos archivos diferentes (modo vertical).
A continuacin, hay que crear la actividad que permite gestionar la vista de detalles.
}
}
Esta actividad carga el nuevo layout y muestra la cadena de caracteres que se pasa como parmetro
(extras).
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".FragmentExampleActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailActivity"></activity>
</application>
Ahora puede probar el ejemplo, empezando en modo vertical y pasando despus al modo apaisado.
Modo apaisado