2011-01-26 6 views
1

웹 사이트로 이동하여 API의 결과를 가져 와서 다수의 클릭 가능한 텍스트 뷰를 기존 LinearLayout에 추가하는 비동기 태스크가 있습니다.액티비티 외부에서 인 텐트 시작하기

그러나 텍스트 뷰를 클릭 할 때 새로운 활동을 시작할 수 있기를 원합니다. 이것은 별도의 파일에 정의 된 asynch 클래스로는 불가능합니다. 활동 내에서 인라인 클래스로 정의하는 것이 더 쉬울까요?

답변

3

항상 비동기 클래스에 Context를 전달할 수 있습니다.

더 나은 방법은 호출 클래스에서 호출 할 async 호출을 다시 호출하는 것입니다.

+0

아마도이 문제에 대한 최선의 해결책 일 수 있습니다. 그러나 나는 조금 속여서 활동 내에서 수업을 인라인했다. – purserj

1

하나의 접근법은 onClick 속성을 선언하는 XML 파일에서 TextViews를 부풀려서 활동에 정의 된 메소드의 이름을 지정하는 것입니다.

0

컨텍스트를 활동으로 사용하지 마십시오! 어쨌든 캐스트 오류가 발생할 수 있습니다.

public void function(Activity act) 
{ 
    Intent intent = new Intent(act, newActivity.class); 
    act.startActivity(intent); 
} 

또는 매개 변수로 활동을 받아들이는 생성자를 오버로드 대신,이 같은 함수 매개 변수로 활동을 전달할 수 있습니다. 하지만 코드를 확인해 보길 강력히 권합니다. 당신이 활동을 부르는 경우, 당신은 아마 다른 활동에 있어야합니다, 당신은 동의하지 않습니까? 그러나, 나는 때때로 일을 제대로하기 위해 몇 가지 양보를해야한다는 것을 알고 있습니다. 그러므로 현명하게 사용하십시오.