Пытаюсь получить доступ к уже существующей bd через Room, но при выполнении кода просходит ошибка
Attempt to invoke virtual method 'java.lang.String com.example.kmatrosov001.game.daotest.User.getFirst_name()' on a null object reference
База данных не пуста, таблица существует и все элементы в ней есть (пробовал на нескольких БД, распологается в папке assets). В целом, пример полностью идентичен примеру гугла https://developer.android.com/topic/libraries/architecture/room.html ,только он, получается, ругается на пустую дб, но в ней есть все необходимые записи. Также пытался запускать из-под метода onCreate.
Settings.java
public class Settings extends AppCompatActivity implements View.OnClickListener {
Button button;
AppDatabase db;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.settings);
button = findViewById(R.id.sMenu);
button.setOnClickListener(this);
db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "testdb.db").allowMainThreadQueries().build();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.sMenu:
Toast.makeText(this, db.userDao().findByName("My", "Name").getFirst_name(), Toast.LENGTH_LONG).show();
break;
}
}
}
User.java
@Entity
public class User {
@PrimaryKey
private int uid;
@ColumnInfo(name = "first_name")
private String first_name;
@ColumnInfo(name = "last_name")
private String lastName;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
UserDao.java
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertAll(User... users);
@Delete
void delete(User user);
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно при нажатии "Enter" скрыть клавиатуруВсё работает, но при закрытии клавиатуры каретка переходит на новую строку
Красным полем помечена строчка с factorynewConnection()
Необходимо преобразовать строку состоящую из символов (Пример String a = "abc") в массив битов (Пример вывода : 01001101 01010100 01101011) Как это лучше реализовать...