我尝试使用RecyclerView
和MainActivity
将数据从RecyclerView
活动(Activity2
)发送到另一个putExtra
活动(getExtra
) Intent
,但是当我尝试获得Intent
Intent intent = getIntent();
在{{1}的Activity2
中,此代码给出错误onBindViewHolder
,因为找不到Intent intent = getIntent();
。
那么我该怎么做才能从getIntent()
获得Intent
?
这是我在MainActivity
中的代码:
Activity2
答案 0 :(得分:2)
根据您的描述,您正在将数据从MainActivity
的{{1}}发送到RecyclerView
。
此外,Activity2
在所有keydata = intent.getIntExtra("key",0);
中是通用的。
因此,与其从switch cases
中的getIntent()
中提取数据,不如在onBindViewHolder
本身中提取数据,然后使用构造函数将其传递给您的Activity2
。
例如。
RecyclerViewAdapter
答案 1 :(得分:0)
由于您位于适配器内,因此需要为意图提供上下文。
将您的活动上下文传递给适配器构造函数。然后尝试使用它
Intent intent = ((Activity) mContext).getIntent();
答案 2 :(得分:0)
它显示错误是因为您位于适配器内部,还为扩展Activity的类定义了getIntent()函数,您需要获取Activity对象,该对象将在获取活动上下文之后从中获取定义了回收者视图。在函数onCreateViewHolder中定义这样的上下文-
Context context;
public RequestViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int
i) {
context =
LayoutInflater.from(viewGroup.getContext()).inflate(R.id.yourLayou,null,false).getContext()
;
}
然后您可以通过-
来获得Intent。@Override
public void onBindViewHolder(SliderAdapterVH viewHolder, int position) {
Intent intent = ((Activity) context).getIntent();
}