当前位置: 首页 > 知识库问答 >
问题:

我无法在Recyclview项目中打开片段

邵飞宇
2023-03-14

我无法打开recyclerview项目中的片段。当我点击项目中的按钮时,我得到了一条错误消息:对空对象引用的onEditClick(com.example.taskapprealm.edit.EditFragment)“。Null位于适配器内部。

活动中的方法:

 @Override
public void onEditClick(EditFragment editFragment) {
    Fragment fragment = new EditFragment();

    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.recycler_view, fragment);
    transaction.addToBackStack(null);
    transaction.commit();

}

和适配器中的onBindViewHolder:

 @Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, @SuppressLint("RecyclerView") final int position) {
   Task task = tasks.get(position);
   holder.textItem.setText(task.getText());
   holder.dateItem.setText(task.getDate());
   holder.timeItem.setText(task.getTime());
   holder.deleteButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           int position = holder.getAdapterPosition();
           Log.d(TAG, "DELETE_CLICK " + holder.getAdapterPosition());
           callback.onDeleteClick(position);
           notifyItemRemoved(holder.getAdapterPosition());
       }

   });


   holder.editButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Toast.makeText(v.getContext(), "TEST " + holder.getAdapterPosition(), Toast.LENGTH_LONG).show();

           mainActivity.onEditClick(editFragment);
       }
   });

}

接口:

 void onEditClick(EditFragment editFragment);

日志:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.taskapprealm.debug, PID: 8045
              java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.taskapprealm.main.MainActivity.onEditClick(com.example.taskapprealm.edit.EditFragment)' on a null object reference
                  at com.example.taskapprealm.main.MainAdapter$2.onClick(MainAdapter.java:94)
                  at android.view.View.performClick(View.java:5198)
                  at android.view.View$PerformClick.run(View.java:21147)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

共有1个答案

柴浩大
2023-03-14

似乎您在引用RecyclerView而不是片段容器:

transaction.replace(R.id.recycler_view, fragment);

可能,recycler\u视图应该替换为您的片段容器。另外,检查EditFragment视图是否正确,并且没有被onCreateView()方法中的任何错误或打字错误所取代。

此外,如前所述,mainActivity看起来是空的。

阅读:如何在回收器视图适配器中获取上下文

 类似资料:
  • 因此,在我的have中,我有回收视图,我想要我的再循环视图项目之间的间隔,所以这里我有两个选项 < li >我可以子类化< code > RecyclerView。ItemDecoration < li >我可以将< code >边距添加到项目本身 Cleary第二个选项很简单,使用该选项我得到了想要的结果,但在网上我看到人们使用并推荐它。 我想知道使用< code>ItemDecoration是

  • 在MacOS升级到Big Sur并将netbeans_jdkhome更改为netbeans.conf文件后,应用程序打开并运行,但无法打开我的项目之一,因为文档下的项目文件框显示为空内容(当然我的文件也在那里)。 也不可能创建一个新项目,包括一些日志消息: Apache NetBeans 11.2和12.2也存在同样的问题。 所以我想Netbeans是不允许访问磁盘上的文件的。我进入了我的“系统”

  • 错误:任务“:app:TransformDexArchiveWithExternalLibsDexMergerForDebug”执行失败。 java.lang.RuntimeException:com.android.builder.dexing.DexArchivEmergerException:无法合并dex 我尝试了以下帖子推荐的每一个解决方案: 后1 职位2 这是我的应用程序Gradle:

  • 我已经将我们的一个Android项目从旧的Groovy和和。 虽然“它在我的机器上工作”——特别是:我从Groovy转换为静态编程语言的原始项目在其原始目录下工作正常——但我所有的同事在克隆回购时都无法打开该项目。重要的是,当我克隆回购到其他目录时,我也不能自己打开项目(在同一台机器上安装相同的AS)。所以,我怀疑有一些额外的细节丢失在一些配置文件,但我似乎无法找出哪个... 详情: 当我只使用

  • 我正在使用flutter来研发App。我在我的项目中添加了fire base,之后当我运行应用程序时,调试控制台中出现了一些错误。我删除了fire base库,但其他库再次出现错误。 注意:我不使用Android X 建筑格拉德尔: bulild.gradle(app) > 运行Gradle: ProcessException: Process"E:\MehrdadyOmidi\Project\f

  • 当我试图从Intellij中打开JavaFx scenebuilder中的fxml文件时,它给出了以下错误:无法打开“示例”。fxml“打开”操作失败。确保所选文件是有效的FXML文档。请参阅下面的图片以查看错误的foto。