Below is the code for this activity.
package com.example.chernovik; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseHelper extends SQLiteOpenHelper{ // путь к базе данных вашего приложения private static String DB_PATH="/data/data/com.example.chernovik/DataBase.db/"; public static String DB_NAME="DataBase.db"; static final String TABLE = "Data"; private SQLiteDatabase myDataBase; // названия столбцов static final String COLUMN_ID = "_id"; static final String COLUMN_NAME = "data"; private final Context mContext; /** * Конструктор * Принимает и сохраняет ссылку на переданный контекст для доступа к ресурсам приложения */ public DataBaseHelper(Context context) { super(context, DB_NAME, null, 1); this.mContext = context; DB_PATH=mContext.getFilesDir().getPath() + DB_NAME; } /** * Создает пустую базу данных и перезаписывает ее нашей собственной базой * */ public void createDataBase() throws IOException{ boolean dbExist = checkDataBase(); if(dbExist){ //вызывая этот метод создаем пустую базу, позже она будет перезаписана this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } else{ //вызывая этот метод создаем пустую базу, позже она будет перезаписана this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } public void updateDataBase() throws IOException{ this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } /** * Проверяет, существует ли уже эта база, чтобы не копировать каждый раз при запуске приложения * @return true если существует, false если не существует */ private boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); }catch(SQLiteException e){ //база еще не существует } if(checkDB != null){ checkDB.close(); } return checkDB != null ? true : false; } /** * Копирует базу из папки assets заместо созданной локальной БД * Выполняется путем копирования потока байтов. * */ private void copyDataBase() throws IOException{ //Открываем локальную БД как входящий поток InputStream myInput = mContext.getAssets().open(DB_NAME); //Путь ко вновь созданной БД String outFileName = DB_PATH + DB_NAME; //Открываем пустую базу данных как исходящий поток OutputStream myOutput = new FileOutputStream(outFileName); //перемещаем байты из входящего файла в исходящий byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //закрываем потоки myOutput.flush(); myOutput.close(); myInput.close(); } public SQLiteDatabase openDataBase() throws SQLException{ //открываем БД String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); return null; } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } So below is the class in which the database is created.
package com.example.chernovik; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseHelper extends SQLiteOpenHelper{ // путь к базе данных вашего приложения private static String DB_PATH="/data/data/com.example.chernovik/DataBase.db/"; public static String DB_NAME="DataBase.db"; static final String TABLE = "Data"; private SQLiteDatabase myDataBase; // названия столбцов static final String COLUMN_ID = "_id"; static final String COLUMN_NAME = "data"; private final Context mContext; /** * Конструктор * Принимает и сохраняет ссылку на переданный контекст для доступа к ресурсам приложения */ public DataBaseHelper(Context context) { super(context, DB_NAME, null, 1); this.mContext = context; DB_PATH=mContext.getFilesDir().getPath() + DB_NAME; } /** * Создает пустую базу данных и перезаписывает ее нашей собственной базой * */ public void createDataBase() throws IOException{ boolean dbExist = checkDataBase(); if(dbExist){ //вызывая этот метод создаем пустую базу, позже она будет перезаписана this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } else{ //вызывая этот метод создаем пустую базу, позже она будет перезаписана this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } public void updateDataBase() throws IOException{ this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } /** * Проверяет, существует ли уже эта база, чтобы не копировать каждый раз при запуске приложения * @return true если существует, false если не существует */ private boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); }catch(SQLiteException e){ //база еще не существует } if(checkDB != null){ checkDB.close(); } return checkDB != null ? true : false; } /** * Копирует базу из папки assets заместо созданной локальной БД * Выполняется путем копирования потока байтов. * */ private void copyDataBase() throws IOException{ //Открываем локальную БД как входящий поток InputStream myInput = mContext.getAssets().open(DB_NAME); //Путь ко вновь созданной БД String outFileName = DB_PATH + DB_NAME; //Открываем пустую базу данных как исходящий поток OutputStream myOutput = new FileOutputStream(outFileName); //перемещаем байты из входящего файла в исходящий byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //закрываем потоки myOutput.flush(); myOutput.close(); myInput.close(); } public SQLiteDatabase openDataBase() throws SQLException{ //открываем БД String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); return null; } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } I also add the structure:
10284-10284/com.example.chernovik E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.chernovik, PID: 10284 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.chernovik/com.example.chernovik.ActivityList}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2821) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6692) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference at com.example.chernovik.ActivityList.<init>(ActivityList.java:62) at java.lang.Class.newInstance(Native Method) at android.app.Instrumentation.newActivity(Instrumentation.java:1086) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2811) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6692) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
DataBaseHelper. And the error is due to the fact that you are trying to get the text using the.getText()method from a non-existent link to the object - Danil