【发布时间】:2021-03-06 07:56:23
【问题描述】:
我想在适配器类中长按时隐藏工具栏。但无论我选择哪种方式,它总是给我错误,即尝试调用虚拟方法'void androidx.appcompat.widget.Toolbar.setVisibility(int)' on a null object reference 或类似的东西。这是我的方法
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
androidx.appcompat.widget.Toolbar toolbar;
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main,parent,false);
public void onBindViewHolder(MyAdapter.MyViewHolder holder, int position) {
holder.item.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
MenuItem menuItem = mode.getMenu().findItem(R.id.my_toolbar);
menuItem.setVisible(false); or
toolbar = view.findViewById(R.id.my_toolbar);
toolbar.setVisibility(View.GONE);
这是工具栏所在的片段活动的xml文件。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".FragmentOne">
<androidx.appcompat.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/main"
android:id="@+id/RV"/>
</androidx.constraintlayout.widget.ConstraintLayout>
【问题讨论】:
-
mode和view代表什么? -
onCreateActionMode(ActionMode mode, Menu menu) 在长按方法和视图在适配器类的onCreateViewHolder中创建。
-
适配器的每一行都有Toolbar吗?
-
我只是在长按监听器中初始化它,如上图所示,但另一个片段中有一个工具栏具有相同的 id,所以我更改了它们但结果相同
-
在您的代码示例中实际上没有专门针对
view的声明?唯一引用它的行是view.findViewById(R.id.my_toolbar);。
标签: android android-toolbar show-hide