2012-04-06 15 views
0

NEWBIE ALARM!Kann ich meine Aktivität instanziieren ... und sollte ich?

Hier ist die Situation. Ich habe eine Android ListActivity-Klasse (AppWindow), die alle Methoden enthält, die die Benutzeroberfläche für meine Anwendung erstellen und aktualisieren. Es enthält eine Methode (refreshWindow), die setListAdapter aufruft und daher nicht statisch sein muss. Bisher habe ich eine separate Klasse (FileHandler) verwendet, um Manipulationen an Dateien durchzuführen, auf die von der AppWindow-Klasse verwiesen wird. Ich habe einen Punkt erreicht, an dem ich die refreshWindow-Methode aufrufen möchte, wenn eine bestimmte Dateibearbeitung durchgeführt wurde. Da die refreshWindow-Methode jedoch nicht statisch ist, scheint es, dass ich AppWindow instanziieren und die Methode über diese Instanz aufrufen muss. Ich bin mir jedoch nicht sicher, wie ich das machen soll oder ob es überhaupt eine gute Idee ist. Vielleicht muss ich nur die gesamte FileHandler-Logik in AppWindow verschieben, obwohl ich es vorziehen würde, sie getrennt zu halten.

Hier ist eine Beschreibung der Situation in kodierter Form:

AppWindow.java

... 

public class AppWindow extends ListActivity { 

... 

    void refreshWindow() { 

    ... 

    setListAdapter(new ListAdapter()); 

    ... 

    } 

... 

} 

FileHandler.java

... 

class FileHandler extends Activity { 

... 

    static void doStuffToFiles() { 

    ... 

    AppWindow appWindow = new AppWindow(); 
    appWindow.refreshWindow(); 

    ... 

    } 

... 

} 

Sollte ich dies tun? Wenn ja, wie installiere ich AppWindow ordnungsgemäß?

Antwort

2
  1. Erstellen Sie eine statische Elementvariable; sag act; in FileHandler
  2. Bei der Erstellung von ListActivity setzen Sie die Variable act mit 'this' Variable der Aktivität
  3. Jetzt können Sie auf Activity-Instanz von FileHandler zugreifen.
+0

Perfekt! Ich setze einen statischen Kontext in FileHandler, setze ihn auf "this" von AppWindow, wie du es vorgeschlagen hast, und nenne dann ((AppWindow) context) .refreshWindow(). Sieht so aus als würde es funktionieren! – osweetman

0

Aktualisieren Sie die Benutzeroberfläche muss im UI-Thread sein. Sie können den Handler verwenden, um die Nachricht zu verarbeiten. Der Konstruktor des Handlers kann die Aktivität enthalten, sodass Sie sie verwenden können.

Verwandte Themen