web-dev-qa-db-ja.com

アダプタからstartActivityForResultを呼び出すことができますか?

onActivityResume内にメソッドadapterを入れてstartActivityForResultを呼び出すことは可能ですか?

35
napster

はい。アクティビティのコンテキストをアダプターのコンストラクター(ここではmContextとして保存)のアダプターに渡すだけです。 getViewで、単に呼び出す

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE);
88
user936414

アダプターのコンストラクターでコンテキストを渡すために必ずしも渡す必要はありません。親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);
6
eugeneek

オフコース...

((Activity) context).startActivityForResult(intent, 911);

注意 !!

MyActivity.thisのみをアクティビティからアダプターとしてコンテキストとして渡します。

getActivity();のみを渡すコンテキストとしてのフラグメントからアダプターへ。

2
Ali Nawaz