如何解决setOnCheckChangedListener空指针异常?
我知道什么是空指针异常。我只是看不到这里有什么问题。复选框将初始化为复选框类型变量,并分配一个视图对象。我想念什么?任何帮助表示赞赏。
2020-08-24 12:32:05.868 22356-22356 /? E / AndroidRuntime:致命异常:main 流程:com.kittybreath.android.criminalintent2,PID:22356 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.CheckBox.setOnCheckedChangeListener(android.widget.CompoundButton $ OnCheckedChangeListener)' 在com.kittybreath.android.criminalintent2.CrimeFragment.onCreateView(CrimeFragment.java:62)
package com.kittybreath.android.criminalintent2;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class CrimeFragment extends Fragment {
private Crime crime;
private EditText titleField;
private Button dateButton;
private CheckBox solvedCheckBox;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
crime = new Crime();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime,container,false);
titleField = v.findViewById(R.id.crime_title);
dateButton = v.findViewById(R.id.crime_date);
solvedCheckBox = v.findViewById(R.id.crime_solved);
titleField.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int start,int count,int after) {
}
@Override
public void onTextChanged(CharSequence s,int before,int count) {
crime.setTitle(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
dateButton.setText(crime.getDate().toString());
dateButton.setEnabled(false);
solvedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
crime.setSolved(isChecked);
}
});
return v;
}
}
犯罪班
package com.kittybreath.android.criminalintent2;
import java.util.Date;
import java.util.UUID;
public class Crime {
private UUID id;
private String title;
private Date date;
private boolean solved;
// Constructor assigns unique id and default current date
public Crime() {
id = UUID.randomUUID();
date = new Date();
}
// Getters and Setters
public UUID getId() {
return id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public boolean isSolved() {
return solved;
}
public void setSolved(boolean solved) {
this.solved = solved;
}
}
XML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="16dp">
<TextView
style="?android:listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/crime_title_label"/>
<EditText
android:id="@+id/crime_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/crime_title_hint"/>
<TextView
style="?android:listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/crime_details_label"/>
<Button
android:id="@+id/crime_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<CheckBox
android:id="@+id/crime_solved"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/crime_solved_label"/>
</LinearLayout>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。