gpt4 book ai didi

java - 尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setVisibility(int)'

转载 作者:行者123 更新时间:2023-12-01 19:28:17 25 4
gpt4 key购买 nike

我有 2 个布局文件 (activity_test.xml) 和 (content.xml) 以及一个 java 文件 (ActivityTest.java)

ActivityTest.java 从 (activity_test.xml) 设置其内容布局,如图所示

ActivityTest.java

@Override
protected void onCreate(Bundle savedInstanceState) {
.....................

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

}

activity_test.xml 包含一个 recyclerView,如图所示

activity_test.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
tools:context=".ActivityTest">

............
some views
...........

<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_view2"
android:layout_marginTop="30dp"
android:layout_alignParentBottom="true"
android:scrollbars="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
/>

我有一个 RecyclerViewAdapter,它会膨胀 (content.xml) 布局,如图所示

RecyclerViewAdapter

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

.............
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.content, parent, false);
return new RecyclerViewAdapter.MyViewHolder(itemView);
}
}

这是内容.xml

content.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".TestActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>

...........

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/save"
android:src="@drawable/outline_share_black_48dp"
android:layout_toLeftOf="@+id/savePhoto"
android:layout_marginTop="5dp"
android:layout_marginRight="20dp"
android:clickable="true"
android:onClick="saveIntent"
/>

问题 - 使用 id(save) 在上面的 ImageView 上设置点击监听器会引发该错误。

ClickEvents(例如 OnClickListener、OnTouchLlistener、setVisibility)都会引发错误 - “尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setVisibility(int)'”

例如

MainActivity.java

..........

private ImageView save_icon;

..........

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

.............
save_icon = findViewById(R.id.save);
........

public void saveIntent(View view){
if(view.getId() == R.id.savePhotoIcon){
save_icon.setImageResource(R.drawable.outline_bookmark_black_48dp);
}
}

我想将ImageView的图像src更改为另一个图像onClick

我尝试在没有 xml 的情况下执行此操作 - (android:Clickable 和 android:OnClick),但仍然抛出相同的错误。

content.xml 中的 id(save) 很可能返回 null 值,因为它没有用作 MainActivity.Java 文件中 onCreate 中的 setContentView 布局。

当我在 (activity_test.xml) 的 View 上尝试相同的操作时,它有效。

尽管如此,诸如 - 显示 toast 消息、新 Intent 之类的操作都有效。例如

 public void saveIntent(View view){
Intent intent = new Intent(ActivityTest.this, AnotherActivity.class);
startActivity(intent);
}

最佳答案

这是因为您在运行时使用布局模板创建 View 持有者,并且在 View 显示在屏幕上之前调用 View 持有者。为此,您必须在 onBindViewHolder 中实现它:

 public void onBindViewHolder(MyViewHolder holder, int position)
{
ImageView imgView=holder.itemview.findViewById(R.id.save);
imgView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here executes when user click on save
}
});
}

关于java - 尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setVisibility(int)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60727174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com