2012-04-06 84 views
0

NEWBIE ALERT!我可以實例化我的活動...我應該嗎?

這是情況。我有一個Android ListActivity類(AppWindow),它包含爲我的應用程序創建和更新用戶界面的所有方法。它包含一個調用setListAdapter的方法(refreshWindow),因此必須是非靜態的。到目前爲止,我一直在使用一個單獨的類(FileHandler)來對AppWindow類引用的文件執行操作。當某個文件操作已經執行時,我已經達到了要調用refreshWindow方法的程度。但是,由於refreshWindow方法是非靜態的,我似乎需要實例化AppWindow並通過該實例調用方法。但是,我不知道如何做到這一點,或者如果它是一個好主意。也許我只需要將所有的FileHandler邏輯移入AppWindow,儘管我寧願將它們分開。

這裏的情況以代碼的形式描述:

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

    ... 

    } 

... 

} 

我應該這樣做呢?如果是這樣,我該如何正確實例化AppWindow?

回答

2
  1. 創建一個靜態成員變量;行爲;在FileHandler中
  2. 創建ListActivity時,使用'this'變量的活動設置變量act
  3. 現在您可以從FileHandler訪問活動實例。
+0

完美!我在FileHandler中放置了一個靜態上下文,並按照您的建議將其設置爲「this」,然後調用((AppWindow)context).refreshWindow()。看起來它會工作! – osweetman 2012-04-06 06:15:02

0

更新UI必須位於UI線程中。您可以使用處理程序來處理消息。處理程序的構造函數可以包含該活動,因此您可以使用它。

相關問題