2011-07-02 3 views
0

res/layout 폴더에는 main.xml과 page2.xml의 2 가지 레이아웃 파일이 있습니다. 는 main.xml에 나는 page2.xml로 변경Android에서 갤러리보기를 사용하는 방법 (다른 페이지에서)

setContentView(R.layout.page2); 

을 시작 환영 정보와 버튼을 가지고있다.

page2.xml에 갤러리보기를 추가하기로 결정할 때까지 제대로 작동했습니다.

ContentView를 처음부터 다음과 같이 page2로 설정할 때 괜찮습니다.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.page2); 
    Gallery g = (Gallery) findViewById(R.id.gallery);  
    g.setAdapter(new ImageAdapter(this)); 

하지만

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);  
    g.setAdapter(new ImageAdapter(this)); 

응용 프로그램을 반환 오류 ... 페이지를 시작할 수 있습니다 보여주기 위해 첫 번째 main.xml에를 호출 할 때. 나는 문제가 라인의 컨텍스트와 것을 알고

g.setAdapter(new ImageAdapter(this)); 

하지만 난 완전히 올바른 컨텍스트를 전달하거나 다른 방법으로 그것을 해결 (하지만 하나의 XML에있는 모든 레이아웃을하고 싶지 않아하는 방법을 모른다 파일).

+0

어떤 오류 (예외)가 발생 했습니까? – xandy

+0

버튼이 setContentView로 page2.xml을 열지 만, 나중에 예제 2의 onCreate로 표시한다고합니다. 하나 또는 두 개의 활동이 있다면 나에게 명확하지 않습니다. – BrainCrash

+0

화면에서 나는 그것이 강제로 종료되었음을 알 수 있습니다. 나는 디버거에서 더 많은 것을 확인하려했지만 자세한 오류 코드를 찾을 수 없습니다. 그리고 하나의 활동이 있습니다. 새로운 Activity를 시작하기 위해 Intent를 사용하지 않고 버튼을 누른 후에 또 다른 ContentView를 설정한다 : public void buttonPressed (View target) {setContentView (R.layout.page2); \t} – Michal

답변

1

귀하의 설명 (로그가 아프지 않음)에서 완전히 명확하지는 않지만 gallery이 (가) main.xml에 정의되어 있지 않기 때문에 널 포인터 예외가 발생한다고 생각합니다. 문제의 해결책은 두 가지가 있습니다.

  1. 두 개의 "페이지"를 두 가지 활동으로 나눕니다. 이것은 사물을 다루는 훨씬 더 자연스러운 방법입니다. 휴대 전화/에뮬레이터를 돌리면 내 뜻을 알 수 있습니다. 사용자가 단추 등을 클릭하면 startActivity()으로 전화 한 다음 finish()으로 전화를 걸어 환영 활동이 중단되지 않습니다.
  2. 문제는 findViewById()이 현재 활동에서 "보이는"무엇이든 작동한다는 것입니다. setContentView(main)을 수행 했으므로 Gallery은 표시되지 않습니다. "페이지 변경"(setContentView(R.layout.page2);)을 호출 한 후에 만 ​​갤러리에 "가져 오기"를 시도하십시오.

그러나 첫 번째 옵션을 사용하는 것이 좋습니다.

+0

Thx 많이 있습니다. 두 가지 활동이 올바르게 작동하고 있습니다. 간단한 레이아웃 변경은 하나의 활동으로 유지 될 수 있다고 생각했습니다. 또한보기를 변경 한 후 설정 어댑터를 이동하려고했습니다 : 'public void buttonPressed (View target) {setContentView (R.layout.page); g.setAdapter (새 ImageAdapter (this));} '오류가 유지됩니다. 그래서 나는 옵션 1을 사용할 것입니다. – Michal

+0

위대한! 내가 말했듯이 그렇지 않으면 당신은 상태 (hasSeenWelcome) 등을 저장해야하기 때문에 훨씬 더 자연 스럽습니다. 그것들을 분리하는 것이 더 쉽습니다. – dmon

관련 문제