Declarar activities

Buenas chicos, estoy intentando aprender a programar en android, y tengo algún que otro problema, espero que podáis ayudarme.

Os cuento mi problema: Yo he creado este layout por ejemplo(Se llama linear):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
   
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Boton"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Booton"

</LinearLayout>


Y luego he creado este activity llamado pact, y aquí es donde empiezan los problemas así que pondré entre paréntesis mis dudas:


import com.example.activities.R; (esta línea tengo que ponerla porque el setcontview me da error si la quito, qué hace?
import android.app.Activity; (que importa?)
import android.os.Bundle; (que importa?)

public class pact extends Activity {
   public void onCreate (Bundle bundle){ (El onCreate es básico y necesario, pero el Bundle qué es?
      
      
           super.onCreate(bundle);
      setContentView(R.layout.linear); (y aquí llamo a el layout linear ¿no?)
   
      
   }
}



Si todo esto está bien, que no lo tengo claro luego tendría que ir a AndroidManifest.xml y en la parte application, pulsar add en Aplication nodes ¿no? Pues no me sale. Estoy algo liado, sé que es porque estoy empezando pero me cuesta avanzar con estas dudas.

Un saludo
A ver, si te puedo ayudar en algo.
El bundle es un parametro "manejador". Sirve para eso, manejar lo que le llegue.
Las activity las debes declarar en el Manifest y puedes hacerlo tambien por código.
Lo que no me queda muy claro es el objetivo.
¿Queires que se habra otra activity desde la activity 1?
No os lo tomeis a mal, pero las cosas hay que hacerlas bien. Programar sin documentación es una barbaridad.
Una de las cosas buenas que tiene Android es que está bastante bien documentado (en inglés), teneis tutoriales de todo tipo, y prácticamente cada función está documentada.
Se que el inglés puede ser una barrera, pero si vais a querer programar en Android puro y entender bien las cosas, por ahora no os va a quedar otro remedio que tener un nivel básico de inglés.

Documentación con ejemplos (Además de la web oficial donde tienes material de todo tipo):

http://developer.android.com/guide/comp ... ties.html#

Lo que preguntas exactamente:

The system passes this method a Bundle in which you can save state information about the activity as name-value pairs, using methods such as putString() and putInt(). Then, if the system kills your application process and the user navigates back to your activity, the system recreates the activity and passes the Bundle to both onCreate() and onRestoreInstanceState(). Using either of these methods, you can extract your saved state from the Bundle and restore the activity state. If there is no state information to restore, then the Bundle passed to you is null (which is the case when the activity is created for the first time).

Luego otra cosa bastante importante es la API:

http://developer.android.com/reference/packages.html

El caso concreto que preguntas:

http://developer.android.com/reference/ ... .os.Bundle)

Ahi puedes leer que significa el parametro también:

Parameters
savedInstanceState: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null.


En resumidas cuentas, es un "paquete" que te pasan con datos para el caso de que te hayan parado, suspendido... la aplicación, poder volver a mostrar los datos correctamente.
Ejemplo:

Si haces una aplicación simple con un EditText en Android, y pulsas el botón home y te pones a abrir un montón de aplicaciones y el sistema se queda sin memoria suficiente, tu aplicación pasara de onPause() a onStop(). Los datos que tenias en el EditText SE PIERDEN. Para evitar eso hay maneras de guardar los datos de manera que ese "Bundle o paquete" que te pasan contenga lo que guardaste. Así si el usuario vuelve a "abrir" tu aplicación, puedes volver a rellenar el EditText y el usuario ni lo notaría.
2 respuestas