2012-07-22 21 views
9

En mi proyecto de Android, tengo muchas actividades y algunas de ellas ya extienden otras cosas, como actividad de mapa o BroadcastReceiver.android: cómo crear una función reutilizable

Cómo creo una función a la que pueda llamar desde cualquier actividad, porque no quiero tener que repetir ningún código en actividades múltiples.

gracias.

Respuesta

12

Si tengo funciones útiles que realizan pequeñas tareas votos que quiero invocar a varias actividades, puedo crear una clase llamada Util y los aparcan allí. Los hago static para que no necesite asignar ningún objeto.

Aquí es un ejemplo de parte de uno de tales clases escribí:

public final class Util { 
    public final static int KIBI = 1024; 
    public final static int BYTE = 1; 
    public final static int KIBIBYTE = KIBI * BYTE; 

    /** 
    * Private constructor to prevent instantiation 
    */ 
    private Util() {} 

    public static String getTimeStampNow() { 
     Time time = new Time(); 
     time.setToNow(); 
     return time.format3339(false); 
    } 
} 

Para utilizar estas constantes y métodos, que pueden acceder a ellos desde el nombre de la clase, en lugar de cualquier objeto:

int fileSize = 10 * Util.KIBIBYTE; 
String timestamp = Util.getTimeStampNow(); 

Hay más en la clase que esto, pero ya entiendes la idea.

3

Puede extender la clase de Aplicación, luego en sus actividades llame al método getApplication y ejecútelo a su clase de aplicación para llamar al método.

Esto se hace mediante la creación de una clase que se extiende android.app.Application:

package your.package.name.here; 

import android.app.Application; 

public class MyApplication extends Application { 

    public void doSomething(){ 
     //Do something here 
    } 
} 

En el manifiesto a continuación, debe encontrar la etiqueta y añadir el androide: name = "MyApplication" atributo.

En su clase de actividad A continuación, puede llamar a la función haciendo:

((MyApplication)getApplication()).doSomething(); 

Hay otras formas de hacer algo similar, pero esta es una de las maneras. La documentación incluso establece que un singleton estático es una mejor opción en la mayoría de los casos. La documentación de la aplicación está disponible en: http://developer.android.com/reference/android/app/Application.html

+0

me puede mostrar un ejemplo de esto, no estoy seguro de cómo se hace esto – omega

+0

¿Pongo el código anterior en un nuevo archivo .java? y para "android: name =" MyApplication "", ¿cómo lo agrego al manifiesto? – omega

+1

Si usa Eclipse, utilizo el punto de menú "Agregar clase" para crear la clase de aplicación. Y para el manifiesto, abra el archivo de manifiesto y busque una línea que tenga el siguiente aspecto: y agregue el atributo de nombre para que se convierta en algo así como Dimse

0

Puede crear un método estático o un objeto que contenga este método.

0

Puede crear una actividad de ampliación de clase, y luego asegurarse de que sus actividades reales sean subclases de esa actividad, en lugar de la actividad habitual incorporada. Simplemente defina su código común en esta actividad principal.

Shachar

Cuestiones relacionadas