2012-04-06 3 views
0

NEWBIE 경고!내 액티비티를 인스턴스화 할 수 있습니까? 그럴 수 있습니까?

여기 상황이 있습니다. 내 응용 프로그램의 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'액티비티 변수를 사용하여 변수 act를 설정하십시오.
  3. 이제 FileHandler에서 액티비티 인스턴스에 액세스 할 수 있습니다.
+0

완벽! 나는 정적 Context를 FileHandler에두고 AppWindow에서 "this"로 설정 한 다음 ((AppWindow) context) .refreshWindow()를 호출했다. 일할 것 같아! – osweetman

0

업데이트 UI는 UI 스레드에 있어야합니다. 핸들러를 사용하여 메시지를 처리 ​​할 수 ​​있습니다. 핸들러의 생성자는 활동을 포함 할 수 있으므로 사용할 수 있습니다.

관련 문제