2012-08-09 69 views
26

是否有可能在adapter &範圍內有方法onActivityResume致電startActivityForResult我們可以從適配器調用startActivityForResult嗎?

+0

是的,你在適配器 – ckpatel 2012-08-09 11:59:22

+0

確保使用startActivityForResult我有一個列表視圖即從適配器獲取其內容。我有一個按鈕在適配器上,點擊按鈕另一個活動將開始並返回一些東西 – napster 2012-08-09 12:08:18

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity它的一個complate例子與你的quastion相同.i它的幫助。所有最佳 – ckpatel 2012-08-09 12:10:59

回答

64

是的。只需將該活動的上下文傳遞給適配器的構造函數中的適配器(這裏存儲爲mContext)。 在getView,只需撥打

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE); 
+0

謝謝@ user936414。 – napster 2016-04-03 14:05:02

+1

我們如何確定這裏的上下文始終是Activity的一個實例? – Asakura 2017-04-21 09:16:06

+0

@Asakura正如答案中提到的「只需將活動的上下文傳遞到適配器的構造函數中的適配器」 - 您需要傳遞活動的上下文 – user936414 2017-05-15 05:06:01

4

不一定傳遞通過適配器的構造背景。您可以從父ViewGroup獲取上下文。樣品RecyclerView適配器:

Context mContext; 
@Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     mContext = parent.getContext(); 
     ... 
    } 

樣品的ListView BaseAdapter

Context mContext; 
@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     mContext = parent.getContext(); 
     ... 
} 

並使用它,無論你想

((Activity) mContext).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE); 
+0

上下文沒有startActivityForResult?你需要一個活動。 – Kenneth 2015-11-27 07:45:50

+0

您可以將mContext強制轉換爲Activity:'((Activity)mContext)' – eugeneek 2015-11-27 10:26:40

+1

我剛剛發現的一個問題是,如果您在Fragment中接收到結果,它將不會被傳遞。即使你調用super.onActivityResult(requestCode,resultCode,data);在你的活動中,它似乎沒有把結果傳遞給你的片段。在進一步閱讀這裏:http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment我發現你必須進行調用startActivityForResult沒有任何活動。思考? – mparkes 2016-04-21 22:30:13

相關問題