2011-07-02 9 views
2

나는 Activity 클래스가있다. onCreate에서 필요한 모든 뷰를 찾은 다음 findViewById을 호출하지 않고이 필드를 참조하는 것이 좋습니다. 그러나 그렇게 할 수 있습니까?View 개체를 인스턴스 필드에 저장할 수 있습니까?

런타임에보기에 다른 객체를 할당 할 수 없습니까? 예 : 언제든지 findViewById(res1) == findViewById(res1)은 항상 사실입니까?

+0

안녕하세요 Andy ... 대부분의 코드 샘플은 onCreate에서 findViewById를 호출하고 뷰를 참조하는 인스턴스 변수를 가지고 있습니다. – JAL

+0

@JAL : 알고 있습니다. 그러나 그들이하는 일이 맞다면 여전히 흥미 롭습니다. =) – Andy

+0

OK. 이것을 보는 또 다른 방법은 매개 변수를 Activity의 생성자에 전달할 수 없다는 것입니다. onCreate는 생성자이며 뷰 변수를 초기화 할 수있는 곳입니다. 나는이 어리석은 실험 온라인을 가지고있다. https://sites.google.com/site/jalcomputing/home/mac-osx-android-programming-tutorial/stupid – JAL

답변

1

활동의보기에 대한 인스턴스 변수를 만들 수 있습니다.

은 레이아웃을 다시 팽창 시키거나 내용보기에 대한 다른 변경 (보기 교체)이없는 한 true입니다.

그러나보기를 보유하는 활동보다 오래 사는 개체의보기에 대한 참조는 유지하지 마십시오. 싱글 톤처럼! (see Avoiding Memory Leaks 참조)

+0

이것은 도움이 될 수 있습니다. setContentView * 메서드는 뷰를 팽창시키고 참조가 변경됩니다. –

0

예 이렇게 할 수 있습니다. 이것이 내가 작업 한 시간의 90 %를 완료 한 것을 본 것입니다. 전의.

개인 ImageView mSomeImage;

공용 클래스 액티브는 필요한 경우에만이 작업을 수행 활동 {

public void onCreate(Bundle saveinstancestate){ 
    Inialize your views here. 
} 

}

를 확장하고, m와 접두사 멤버 변수.

이 정보가 도움이됩니까?

관련 문제