-1
是否有任何檢測上下文是否來自活動或適配器的能力?檢測上下文是否來自活動或適配器
當你調用它的活動很必要的檢測,如果我們能爲適配器
public YourAdapter(Context context) {
this.context = context;
}
做
(Activity(context)).startActivityForResult(..) ...
是否有任何檢測上下文是否來自活動或適配器的能力?檢測上下文是否來自活動或適配器
當你調用它的活動很必要的檢測,如果我們能爲適配器
public YourAdapter(Context context) {
this.context = context;
}
做
(Activity(context)).startActivityForResult(..) ...
您可以嘗試
if(context instanceof Activity)
(Activity(context)).startActivityForResult(..);
這應該工作。
你的構造
adapter = new YourAdapter(YourActivity.this);
所以,你必須上下文適配器。
你是什麼意思「來自適配器的上下文」?活動是上下文,但適配器不是上下文。當您創建適配器時,您將上下文傳遞給它。你傳遞的是什麼語境? –
是的,來自文檔:「與應用程序環境的全局信息接口這是一個抽象類,它的實現由Android系統提供,允許訪問特定於應用程序的資源和類,以及對應用程序特定的資源和類的調用,如發起活動,廣播和接收意圖等。「 。但是,如果它是全球性的,我們爲什麼需要做(Activity(context)),而不是僅僅調用context(?)上的方法。 – Jacob
是的,它是全球性的,您可以從任何環境(服務,應用程序,活動等)啓動活動和服務。因此,您無法從上下文啓動活動結果。實際上只能從活動中調用它(該方法在活動類中定義,而不是在Context類中定義)。這是因爲你的activityA(調用startActivityForResult)會得到它的結果。例如,從服務中調用它是不可能的,因爲服務不知道什麼是活動生命週期。因此,您需要在活動上調用startActivityForResult,而不是在上下文中調用。或者您可以在ctx –