Создание тестового приложения для вопросов / ответов, которое оценивает вас в зависимости от того, сколько попыток потребовалось, чтобы сделать это правильно (т.е. с первой попытки 5 баллов, 2-й попытки 4 балла ... и т. Д.) вопросы хранятся в файле .DB в папке ресурсов, и после тестирования логи оценки c я сейчас пытаюсь извлечь из базы данных.
это DatabaseOpener
package com.example.teambasedlearningapp;
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class DatabaseOpenHelper extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "TBLData.db";
private static final int DATABASE_VERSION = 1;
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
это DatabaseAccessor
package com.example.teambasedlearningapp;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;
/**
* * Private constructor to aboid object creation from outside classes.
* *
* * @param context
*
*/
public DatabaseAccess(Context context) {
this.openHelper = new DatabaseOpenHelper(context);
}
/**
* * Return a singleton instance of DatabaseAccess.
* *
* * @param context the Context
* * @return the instance of DabaseAccess
*
*/
public static DatabaseAccess getInstance(Context context) {
if (instance == null) {
instance = new DatabaseAccess(context);
}
return instance;
}
/**
* * Open the database connection.
*
*/
public void open() {
this.database = openHelper.getWritableDatabase();
}
/**
* * Close the database connection.
*
*/
public void close() {
if (database != null) {
this.database.close();
}
}
/**
* * Read all modules from the database.
* *
* * @return a List of modules
*
*/
public ArrayList<String> getModules() {
ArrayList<String> list = new ArrayList<>();
Cursor cursor = database.rawQuery("SELECT moduleName FROM Module", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
list.add(cursor.getString(0));
cursor.moveToNext();
}
cursor.close();
return list;
}
public ArrayList<String> getQuestions() {
ArrayList<String> list = new ArrayList<>();
Cursor cursor = database.rawQuery("SELECT question FROM Question ", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
list.add(cursor.getString(0));
cursor.moveToNext();
}
cursor.close();
return list;
}
}
и главная страница вопроса, которая отвечает на вопрос
package com.example.teambasedlearningapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.*;
public class GroupAnswering extends AppCompatActivity implements View.OnClickListener{
private TextView question;
private TextView message;
private Button option1;
private Button option2;
private Button option3;
private Button option4;
private Button next;
static ArrayList<String> questions2 = new ArrayList<String>();
static int overall = 0;
String answer = "Red";
int grade = 4;
String question22= questionGet();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_answering);
question = (TextView) findViewById(R.id.question);
message = (TextView) findViewById(R.id.message);
option1 = (Button) findViewById(R.id.option1);
option2 = (Button) findViewById(R.id.option2);
option3 = (Button) findViewById(R.id.option3);
option4 = (Button) findViewById(R.id.option4);
next = (Button) findViewById(R.id.next);
option1.setOnClickListener(this);
option2.setOnClickListener(this);
option3.setOnClickListener(this);
option4.setOnClickListener(this);
next.setOnClickListener(this);
questions2.add(question2);
question.setText(questions22.get(0));
next.setVisibility(View.GONE);
}
public void onClick(View v){
if (v.getId() == option1.getId()) {
int gradef = Score(grade,"Red",answer);
}
else if (v.getId() == option2.getId()) {
int gradef = Score(grade,"Blue",answer);
}
else if (v.getId() == option3.getId()) {
int gradef = Score(grade,"Black",answer);
}
else if (v.getId() == option4.getId()) {
int gradef = Score(grade,"White",answer);
}
else if (v.getId() == next.getId()) {
openActivity2();
}
}
public int Score (int score, String choice, String answer){
int finalScore = score;
if(grade == 0){
overall=+grade;
message.setText("Your score is: "+grade+" move on to the next question");
option1.setVisibility(View.GONE);
option2.setVisibility(View.GONE);
option3.setVisibility(View.GONE);
option4.setVisibility(View.GONE);
next.setVisibility(View.VISIBLE);
next.setText("Next Question");
}
else if( choice.equals(answer)) {
finalScore=-0;
overall=+grade;
message.setText("Your score is: "+grade+" move on to the next question");
option4.setVisibility(View.GONE);
option2.setVisibility(View.GONE);
option3.setVisibility(View.GONE);
next.setVisibility(View.VISIBLE);
next.setText("Next Question");
}
else {
finalScore=-1;
grade--;
message.setText("Your score is: "+grade);
}
return finalScore;
}
public void openActivity2() {
Intent intent = new Intent(this, GroupAnswering.class);
startActivity(intent);
}
public String questionGet(){
DatabaseAccess newDB = new DatabaseAccess(this);
newDB.open();
ArrayList<String> questionsArray = newDB.getQuestions();
newDB.close();
String question2 = questionsArray.get(0);
return question2;
}
}
ошибка:
E / AndroidRuntime: FATAL EXCEPTION: Основной процесс: com.example.teambasedlearningapp, PID: 7433 java .lang.RuntimeException: Невозможно создать экземпляр действия. ComponentInfo {com.example.teambasedlearningapp / com.example.teambasedlearningapp.GroupAnswering}: java .lang.NullPointerException вызвать виртуальный метод 'android .content.pm.ApplicationInfo android .content.Context.getApplicationInfo ()' для ссылки на пустой объект в android .app.ActivityThrea d.performLaunchActivity (ActivityThread. java: 3268) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3488) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 83) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 135) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 95) в android .app .ActivityThread $ H.handleMessage (ActivityThread. java: 2049) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 216) при
Поэтому я спрашиваю, что является причиной этой ошибки и как ее устранить