是否可以onActivityResume
在adapter
& 调用中有方法startActivityForResult
?
问问题
35740 次
4 回答
102
是的。只需在适配器的构造函数(此处存储为 mContext)中将活动的上下文传递给适配器。在 getView 中,只需调用
((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE);
于 2012-08-09T12:03:08.443 回答
9
不一定要在适配器的构造函数中传递上下文。您可以从父 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);
于 2015-11-23T04:39:05.277 回答
2
业余...
((Activity) context).startActivityForResult(intent, 911);
小心!!
仅将MyActivity.this从活动传递到适配器作为上下文。
只通过getActivity();从片段到适配器作为上下文。
于 2018-08-16T13:05:49.760 回答
2
//First Do
public Activity context;
public int REQUEST_CODE = 111;
public Adapter(Activity context, Data data) {
this.context = context;
}
///Second Do
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, NextActivity.class);
context.startActivityForResult(intent, REQUEST_CODE);
}
});
}
如果您遵循此代码,那么您不需要每次都编写它 - ((Activity) context) - 之前 - .startActivityForResult(intent, REQUEST_CODE); - 当您在适配器中使用 startActivityForResult 时。
于 2020-11-11T13:45:45.040 回答