2012-04-06 8 views
0

NEWBIE ALERT!アクティビティをインスタンス化できますか?

ここに状況があります。私はアプリケーションのUIを作成して更新するすべてのメソッドを含む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. 静的メンバー変数を作成します。行為を言う。 in FileHandler
  2. ListActivityを作成すると、変数thisはアクティビティのthis変数を使用して設定されます
  3. FileHandlerからアクティビティインスタンスにアクセスできます。
+0

パーフェクト!私は静的コンテキストをFileHandlerに入れ、提案したようにAppWindowから "this"に設定してから、((AppWindow)context).refreshWindow()を呼び出します。それは動作するように見えます! – osweetman

0

更新UIはUIスレッド内にある必要があります。ハンドラを使用してメッセージを処理できます。ハンドラのコンストラクタにはアクティビティが含まれているので、それを使用できます。

関連する問題