2012-08-09 19 views
26

以内にadapter &をご連絡くださいstartActivityForResultアダプタからstartActivityForResultを呼び出すことはできますか?

+0

を好きな場所はい、あなたは必ず私がリストビューを持つアダプター – ckpatel

+0

でstartActivityForResultを使用している、それを使用それはアダプターからその内容を取得しています。アダプターにボタンがあります。ボタンをクリックすると別のアクティビティーが始まり、何かを返します。 – napster

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activityその複雑な例は、あなたの習慣と同じです.iのものは、その有用なものです。すべてのベスト – ckpatel

答えて

64

はい。アクティビティのコンテキストをアダプタのコンストラクタ内のアダプタ(ここではmContextとして格納されています)に渡します。 getViewメソッドで は、ちょうど

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

ありがとう@ user936414。 – napster

+1

ここでのコンテキストが常にActivityのインスタンスであることを確認するにはどうすればよいですか? – Asakura

+0

@Asakura「アクティビティのコンテキストをアダプタのコンストラクタのアダプタに渡す」のように、アクティビティのコンテキストを渡す必要があります – user936414

4

を呼び出す必ずしもアダプタのコンストラクタでコンテキストを渡すために渡していません。親ViewGroupからコンテキストを取得できます。 RecyclerViewアダプタのサンプル:リストビューBaseAdapter

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

ため

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

サンプルそして、あなたは

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

コンテキストにstartActivityForResultがありませんか?それにはアクティビティが必要です。 – Kenneth

+0

mContextをActivityにキャストすることができます: '((Activity)mContext) ' – eugeneek

+1

このアプローチで見つけた1つの問題は、フラグメントに結果を受け取っても配信されない場合です。あなたがsuper.onActivityResult(requestCode、resultCode、data)を呼び出しても、あなたの活動では、その結果をあなたの断片に届かないようです。ここでさらに読む:http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragmentアクティビティなしでstartActivityForResultを呼び出す必要があることがわかりました。思考? – mparkes

関連する問題