NullPointerException при наличии объекта. AS
Я пишу код для замены текста в объекте EditText с id "nameRoom", но возникает ошибка: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference;
вот часть кода из xml (activity_edit_room):
<EditText
android:id="@+id/nameRoom"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:autofillHints="name"
android:ems="10"
android:gravity="center_horizontal"
android:hint="@string/section_name_hint"
android:inputType="text"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backImageNewRoom" />
Отмечу, что такой же айди есть и в другом документе xml. (Я менял айди, ошибка та же).
Вот код ViewHolder:
public static final class EditRoomViewHolder extends RecyclerView.ViewHolder {
private final TextView newRoomText;
private final EditText newRoomCount;
private final EditText nameRoom;
public EditRoomViewHolder(@NonNull View itemView) {
super(itemView);
newRoomText = itemView.findViewById(R.id.widgetName);
newRoomCount = itemView.findViewById(R.id.widgetCount);
nameRoom = itemView.findViewById(R.id.nameRoom);
}
}
Вот как название меняется в адаптере, отмечу что переменная this.first по умолчанию true:
if (this.first) {
DatabaseHelpers dbHelper = new DatabaseHelpers(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sqlQuery = "SELECT name FROM widgets WHERE id = ?";
Cursor cursor = db.rawQuery(sqlQuery, new String[]{String.valueOf(this.id)});
if (cursor.moveToFirst()) {
Log.i("INF", cursor.getString(cursor.getColumnIndexOrThrow("name")));
holder.nameRoom.setText(cursor.getString(cursor.getColumnIndexOrThrow("name"))); <-- жалуется компилятор (java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference)
}
cursor.close();
this.first = false;
}
Вот как биндится RecyclerView, если вдруг нужно:
private void setNewRoomRecycler(List<NewRoom> newRoomList, int id) {
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
editRoomRecycler = findViewById(R.id.editRoomRecycler);
editRoomRecycler.setLayoutManager(layoutManager);
editRoomAdapter = new EditRoomAdapter(this, newRoomList, id);
editRoomRecycler.setAdapter(editRoomAdapter);
}
По факту NullPointerException вызывается когда нет чего либо, но в данном случае вроде всё есть. Или я глуп и невнимателен или что-то напортачил с xml. Помогите пожалуйста.
Ответы (1 шт):
Пытался взять объект из itemView, но совсем забыл, что в itemview только те объекты, которые в блоках, а не в активити, очень глупый вопрос, извинняюсь.?♂️