2010-08-17 5 views
0

나는 안드로이드 초보자입니다.startActivity가 한 가지 방법으로 작동하고 다른 방법으로 실패하는 이유는 무엇입니까?

내가 찾은 튜토리얼에서 복사했을 때 startActivity가 제대로 실행되는 이유와 가장 작은 변화를 만들었을 때 실패하는 이유를 이해하는 데 어려움을 겪고 있습니다. 튜토리얼에서

코드 : 작동

 
private class ButtonHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     handleButtonClick(); 
    } 
} 

private void handleButtonClick() { 
    startActivity(new Intent(this, SecondAct.class)); 
} 

. 단순한 디자인으로 변경하려고하면 오류가 발생합니다.

 
private class ButtonHandler implements View.OnClickListener { 
    public void onClick(View v) { 
     startActivity(new Intent(this, SecondAct.class)); 
    } 
} 

오류 :
생성자의 의도 (FirstTwoApps.ButtonHandler, 클래스) 내가 한 모든합니다 (온 클릭에 handleButtonClick() 메소드에서 작업을 이동 한 것을

주의 정의되지 않은) 방법 . 명백하게 그것은 허용되지 않지만, 나는 왜 그런지 이해하지 못합니다.

도움을 주시면 대단히 감사하겠습니다.

답변

2

this 참조를 둘러싼 클래스의 참조로 변경해야합니다. 즉, 클래스 이름이 Main 인 경우 Main.this으로 변경하십시오.

+0

그래, 내가 안드로이드로 작업하기 전까지는 자바로 할 수 있다는 것을 몰랐다. +1 – iandisme

+0

고맙습니다. 이 문제가 해결되었습니다. – alockrem

1

startActivityContext입니다. 첫 번째 예제에서는 Context 개체에서 실행되고 두 번째 예제에서는 ButtonHandler 개체에서 실행됩니다. 이것은 범위 지정 문제입니다.

+0

대단히 감사합니다. 이 오류가 왜 발생하는지 이해하는 데 도움이됩니다. 그러면 향후 유사한 문제를 해결하는 데 도움이됩니다. – alockrem

관련 문제