Я не могу получить свои данные из-за исключения нулевого указателя в Android - PullRequest
0 голосов
/ 30 октября 2018

Когда я пытаюсь получить данные из своей базы данных, используя метод данных моего представления, он просто выдает мне исключение нулевого указателя, даже если в моей базе данных есть данные, метод представления данных:

        public String viewdata3(){
   SQLiteDatabase sqLiteDatabase4 = dataBase.getWritableDatabase();
   String [] classdetail = {DataBase.classname,DataBase.studentsnumber};
   @SuppressLint("Recycle") Cursor cursor = sqLiteDatabase4.query(DataBase.tablename1,classdetail,null,
           null,null,null,null,null);
   StringBuilder stringBuilder = new StringBuilder();
   while (cursor.moveToNext()){
       String classnamee = cursor.getString(0);
       int stdntnmbr = cursor.getInt(1);
       stringBuilder.append(classnamee+" "+stdntnmbr+" "+"/n");
   }
   return viewdata3();

всякий раз, когда я вызываю этот метод, приложение просто падает, как и любой другой метод, подобный этому, метод восстановления данных:

        DataBaseConnection db;
 ArrayAdapter<String> adapter;
 String [] data = {Objects.requireNonNull(db).viewdata3()};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    ListView classes = findViewById(R.id.ListView);
  adapter= new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,data);
  classes.setAdapter(adapter);

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я думаю, что проблема здесь

 String [] data = {Objects.requireNonNull(db).viewdata3()};

Вы должны инициализировать БД, прежде чем звонить над строкой.

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
         db = .... // initialize your db;
        data = {Objects.requireNonNull(db).viewdata3()};
        ....
    }
0 голосов
/ 30 октября 2018
  • Кажется, что вы хотите прочитать из вашей базы данных, прежде чем записывать в нее данные.
  • Я бы начал с примера Android sqllite: https://developer.android.com/reference/android/database/sqlite/package-summary
  • не забывайте, что это база данных в памяти, что, вероятно, означает, что вы потеряете ваши DB-данные при закрытии приложения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...