我正在为这个问题而苦苦挣扎:活动应该开始,但是在使用putExtra时不应该开始。唯一发生的是,我看到“片段”在右侧滑动(出现故障后),然后应用崩溃。请注意,此片段是导航组件的一部分。这是我的代码,在onClick方法中:
Intent intent = new Intent(v.getContext(), SecondActivity.class);
intent.putExtra("ID", ID);
v.getContext().startActivity(intent);
Log.w("here", "should have started");
其中“ v”是我单击的RecyclerView的视图。单击后不久,Logcat上将显示以下内容:
V/AudioManager: querySoundEffectsEnabled...
W/here: should have started
V/FA: Recording user engagement, ms: 7695
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@b33fd52
V/FA: Connecting to remote service
V/FA: Activity paused, time: 295957791
当我重新打开应用程序时,它从MainActivity(开头)重新启动。如果我评论putExtra行,则SecondActivity开始,这是一个非常奇怪的行为imo。任何帮助将不胜感激!:)
提供活动上下文以启动活动。从ViewHolder开始活动不是一个好习惯,因为它违反了单一职责原则。实现委派模式以处理ViewHolder中的Click Listener。
interface ItemClickListener {
void onClick(YourModel item);
}
您的适配器
class YourAdapter extends RecyclerView.Adapter<YourViewHolder>{
ItemClickListener listener;
public YourAdapter(ItemClickListener listener){
this.listener = listener;
}
}
听众的用法
listener.onClick(position);
您的活动
YourAdapter adapter = YourAdapter(item -> {
// handle click
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句