2012-07-22 39 views
9

W moim projekcie Android mam wiele działań, a niektóre z nich już rozszerzyć inne rzeczy, takie jak aktywność na mapie lub BroadcastReceiver.android - jak utworzyć funkcję wielokrotnego użytku?

Jak utworzyć funkcję, którą mogę wywołać z dowolnego działania, ponieważ nie chcę powtarzać żadnego kodu w wielu działaniach.

dzięki.

Odpowiedz

12

Jeśli mam użytecznych funkcji, które wykonują mało przydatnych zadań, które chcę powołać się od kilku działaniach, tworzę klasę o nazwie Util i zaparkować je tam. Robię je static, więc nie muszę przydzielać żadnych obiektów.

Oto przykład części jednej takiej klasy I napisał:

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); 
    } 
} 

Aby korzystać z tych stałych i metod, mogę do nich dostęp z nazwą klasy, zamiast dowolnego obiektu:

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

Dla klasy jest więcej, ale masz pomysł.

3

Możesz rozszerzyć klasę Application, następnie w swoich działaniach wywołaj metodę getApplication i przesyłaj ją do swojej klasy aplikacji, aby wywołać metodę.

Można to zrobić przez utworzenie klasy, która rozciąga android.app.Application:

package your.package.name.here; 

import android.app.Application; 

public class MyApplication extends Application { 

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

W swoim manifeście należy następnie znaleźć tag i dodać android: name = „MyApplication” atrybut.

W swojej klasie działalności można następnie wywołać funkcję wykonując:

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

Istnieją inne sposoby robienia czegoś podobnego, ale jest to jeden ze sposobów. Dokumentacja stwierdza nawet, że statyczny singleton jest w większości przypadków lepszym wyborem. Dokumentacja aplikacji jest dostępna pod adresem: http://developer.android.com/reference/android/app/Application.html

+0

czy możesz pokazać mi przykład tego, nie jestem pewien jak to zrobić – omega

+0

czy umieścić powyższy kod w nowym pliku .java? i dla "android: name =" MyApplication "", jak dodać go do manifestu? – omega

+1

Jeśli używasz środowiska Eclipse, sugeruję użycie punktu menu "Dodaj klasę" do utworzenia klasy aplikacji. I dla manifestu, otwórz plik manifestu i poszukaj linii, która wygląda następująco: i dodaj atrybut name, aby stał się czymś w rodzaju Dimse

0

Można utworzyć metodę statyczną lub obiekt zawierający tę metodę.

0

Można utworzyć klasę rozszerzającą działanie, a następnie upewnić się, że rzeczywiste działania są podklasami tej czynności, zamiast zwykłej wbudowanej. Po prostu zdefiniuj swój wspólny kod w tej aktywności rodzica.

Shachar

Powiązane problemy