我们可以从适配器调用startActivityForResult吗?

nap*_*ter 35 android adapter

是否可以onActivityResumeadapter&呼叫中使用方法startActivityForResult

use*_*414 90

是.只需将活动的上下文传递给适配器构造函数中的适配器(此处存储为mContext).在getView中,只需调用即可

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE);
Run Code Online (Sandbox Code Playgroud)

  • 我们如何确定此处的上下文始终是Activity的实例? (2认同)
  • 但是如果我们想在 Fragment 而不是 Activity 中获得 onActivityResult 呢? (2认同)

eug*_*eek 7

不一定要传递给适配器构造函数中的上下文.您可以从父ViewGroup获取上下文.RecyclerView适配器的示例:

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

ListView BaseAdapter的示例

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

并随时随地使用它

((Activity) mContext).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE);
Run Code Online (Sandbox Code Playgroud)