在Fragment内部的RecyclerView的ViewHolder调用的startActivity(intent)中使用putExtra时,应用程序崩溃

坦率

我正在为这个问题而苦苦挣扎:活动应该开始,但是在使用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。任何帮助将不胜感激!:)

穆罕默德·艾哈迈德(Muhammad Ahmed)

提供活动上下文以启动活动。从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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档