2011-03-30 7 views
0

멍청한 질문이 있는데, 나는 이것이 잘못된 길로 가고 있다고 생각합니다.Android 앱 -보기 기능

이것은 내 첫 번째 응용 프로그램입니다 내가 여러 파일 및 클래스, 내 현재의 문제에 그것을 설정하기 위해 노력하고있어 : 미래의 깔끔함과 예상치 못한 사용을 위해

, 나는 함수로 내 레이아웃을 배치했다 :

public void homepage(){ 
    setContentView(R.layout.layout_homepage); 
} 

은 내가 onOptionsItemSelected에서 이러한 기능() 완벽하게 작동을 호출 이전에, 내 직접 탐색의 대부분의 메뉴를 사용합니다.

그러나, 나는 별도의 클래스에 내 페이지 기능을 이동할 때

public class newpage extends MyApp { 

    //Home 
    public void homepage(){ 
     setContentView(R.layout.layout_homepage); 
    } 
.... 

및 기능에 그들에게 전화 :

public boolean onOptionsItemSelected(MenuItem item) { 

    //Create new page class 
     newpage pagecla = new newpage(); 
    ... 

    pagecla.homepage(); 
    .... 

그것은 응용 프로그램 충돌, 유일한 감각 I을 디버깅 할 때 그것을 만들 수 있습니다 NullPointerException입니다. View에 대해 어떤 종류의 가치를 부여해야한다고 생각하지만 실제로 무엇이 확실하지 않습니다.

답변

0

하지 마십시오. 각 액티비티는 함수를 초기화하기 위해 setContentView() 함수를 호출해야합니다. 외부 참조 할 필요가 없습니다.

0

Application이 아니라 활동에서 setContentView을 호출해야합니다. 어쨌든 Application에서이 작업을 수행하려는 경우 (이유를 모르겠 음) 활동에 대한 참조를 제공해야합니다. 하지만 그것은 끔찍한 디자인이며, 클래스 이름을 pagecla으로 지정하지 않을 경우, Java 명명 규칙에 대해 더 잘 읽어야합니다.
OOP 지식이 부족한 것처럼 보입니다. 함수는 실제로 메소드가 호출되는 객체를 필요로합니다. 리팩토링 전에는 Activity이고 그 후에는 pagecla입니다.