-1

是否有任何檢測上下文是否來自活動或適配器的能力?檢測上下文是否來自活動或適配器

當你調用它的活動很必要的檢測,如果我們能爲適配器

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

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

你是什麼意思「來自適配器的上下文」?活動是上下文,但適配器不是上下文。當您創建適配器時,您將上下文傳遞給它。你傳遞的是什麼語境? –

+0

是的,來自文檔:「與應用程序環境的全局信息接口這是一個抽象類,它的實現由Android系統提供,允許訪問特定於應用程序的資源和類,以及對應用程序特定的資源和類的調用,如發起活動,廣播和接收意圖等。「 。但是,如果它是全球性的,我們爲什麼需要做(Activity(context)),而不是僅僅調用context(?)上的方法。 – Jacob

+1

是的,它是全球性的,您可以從任何環境(服務,應用程序,活動等)啓動活動和服務。因此,您無法從上下文啓動活動結果。實際上只能從活動中調用它(該方法在活動類中定義,而不是在Context類中定義)。這是因爲你的activityA(調用startActivityForResult)會得到它的結果。例如,從服務中調用它是不可能的,因爲服務不知道什麼是活動生命週期。因此,您需要在活動上調用startActivityForResult,而不是在上下文中調用。或者您可以在ctx –

回答

2

您可以嘗試

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

這應該工作。

2

你的構造

adapter = new YourAdapter(YourActivity.this); 

所以,你必須上下文適配器。

相關問題