Почему вылетает приложение. Начинаю работать с sqlite, простой вывод данных бд в listView не работет - приложение просто вылетает. В чем может быть причина? Код:
public class MainActivity extends AppCompatActivity {
Button btn;
ListView list;
SQLiteDatabase db;
DatabaseHelper helper;
SimpleCursorAdapter userAdapter;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.button);
list = findViewById(R.id.list);
helper = new DatabaseHelper (getApplicationContext());
helper.create_db();
}
@Override
protected void onResume() {
super.onResume();
db = DatabaseHelper.open();
String[] headres = new String[]{ DatabaseHelper.COLUMN_RECEPT, DatabaseHelper.COLUMN_INGRIDIENT };
cursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
userAdapter = new SimpleCursorAdapter (this, android.R.layout.two_line_list_item, cursor,
headres, new int[]{ android.R.id.text1, android.R.id.text2 }, 0);
list.setAdapter(userAdapter);
}
@Override
protected void onDestroy() {
super.onDestroy();
db.close();
cursor.close();
}
}
Логи:
02-06 21:32:54.102 1520-1520/com.example.len.recept E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.len.recept, PID: 1520
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.len.recept/com.example.len.recept.MainActivity}: java.lang.IllegalArgumentException: Empty file name
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2768)
at android.app.ActivityThread.access$900(ActivityThread.java:190)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1590)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5927)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819)
Caused by: java.lang.IllegalArgumentException: Empty file name
at android.content.res.AssetManager.openAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:336)
at android.content.res.AssetManager.open(AssetManager.java:310)
at com.example.len.recept.DatabaseHelper.create_db(DatabaseHelper.java:50)
at com.example.len.recept.MainActivity.onCreate(MainActivity.java:28)
at android.app.Activity.performCreate(Activity.java:6362)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1122)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2768)
at android.app.ActivityThread.access$900(ActivityThread.java:190)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1590)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5927)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819)
Судя по логам происходит ошибка в этом методе:
void create_db(){
InputStream myInput=null;
OutputStream myOutput=null;
try {
File file = new File(DB_PATH);
if (!file.exists()){
this.getReadableDatabase();
myInput = myContext.getAssets().open(DB_NAME); // ОШИБКА ЗДЕСЬ
String outFileName = DB_PATH;
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();
}
}catch (IOException ex){
Log.d("DatabaseHelper",ex.getMessage());
}
}
Но я не понимаю, что в моем коде работает неправильно.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не печатаемые символы в заголовке окна eclipse, на скриншотеЛокаль ru_RU
Есть в Eclipse горячие клавиши комментирования кода(строки, блока) Так вот, они не работаютНикак
Суть задачи: Есть текст в котором есть даты разного формата 12/9/2010, 1509
Возможно ли написать программу без UI , которая будет слушать изменения в буфере обмена? Например: запустил программу, далее захожу например...