-1

컨텍스트가 활동 또는 어댑터에서 온 것이 아닌지 감지 할 수 있습니까? 우리는 어댑터컨텍스트가 활동 또는 어댑터인지 확인하십시오.

public YourAdapter(Context context) { 
    this.context = context; 
} 

에 대한

(Activity(context)).startActivityForResult(..) ... 
+0

"컨텍스트의 어댑터"란 무엇입니까? 활동은 컨텍스트이지만 어댑터는 컨텍스트가 아닙니다. 어댑터를 작성할 때 컨텍스트를 전달합니다. 당신은 어떤 맥락을 전달합니까? –

+0

그래, 설명서에서 : "응용 프로그램 환경에 대한 글로벌 정보에 대한 인터페이스 이것은 Android 시스템에서 구현 된 추상 클래스이며 응용 프로그램 별 리소스 및 클래스에 대한 액세스는 물론 응용 프로그램 기반 응용 프로그램에 대한 액세스를 허용합니다. 발사 활동, 방송 및 수신 의도 등과 같은 수준의 작업 " . 그러나 글로벌 인 경우 컨텍스트 (?)에서 메서드를 호출하는 대신 (Activity (context)) 수행해야하는 이유는 무엇입니까? – Jacob

+1

예, 글로벌 서비스이며 모든 컨텍스트 (서비스, 응용 프로그램, 활동 등)에서 활동 및 서비스를 시작할 수 있습니다. 따라서 컨텍스트에서 startActivityForResult를 시작할 수 없습니다. 실제로는 액티비티에서만 호출 할 수 있습니다 (이 메서드는 컨텍스트 클래스가 아니라 작업 클래스에서 정의합니다). 그것은 당신의 activityA (startActivityForResult를 호출 함)가 결과를 얻을 것이기 때문에 그렇습니다. 예를 들어, 서비스가 활동 수명주기를 절대적으로 알지 못하기 때문에 서비스에서 호출 할 수 없습니다. 따라서 컨텍스트가 아닌 액티비티에 대해 startActivityForResult를 호출해야합니다. 또는 ctx에서 StartActivity()를 호출 할 수 있습니다. –

답변

2

당신은이 일을해야

if(context instanceof Activity) 
    (Activity(context)).startActivityForResult(..); 

시도 할 수 있습니다.

2

귀하의 생성자를 할 수 있다면

그것은 당신이 활동을 호출 할 때 감지하는 것이 중요합니다

adapter = new YourAdapter(YourActivity.this); 

그래서 당신은 당신의 어댑터에 컨텍스트가 .