Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Andrew9
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 90
#1

SQLite и краш активности - Программирование Android

22.01.2016, 14:56. Просмотров 352. Ответов 0
Метки нет (Все метки)

Всем привет, подскажите в чем дело.
Есть класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
 
 
    private GoogleMap mMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
 
    public SQLiteOpenHelper dbHelper;
    SQLiteDatabase db = dbHelper.getWritableDatabase();
 
    Cursor c = db.query("geotable", null, null, null, null, null, null);
 
    int imageColIndex = c.getColumnIndex("image");
    int lngColIndex = c.getColumnIndex("lng");
    int latlColIndex = c.getColumnIndex("lat");
    String imageTest = c.getString(imageColIndex);
    double lngTest = c.getDouble(lngColIndex);
    double ltdTest = c.getDouble(latlColIndex);
 
    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                new LatLng(41.889, -87.622), 16));
 
        // You can customize the marker image using images bundled with
        // your app, or dynamically generated bitmaps.
        googleMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.darth_vader))
                .anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
                .position(new LatLng(41.889, -87.622)));
 
        googleMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromPath(imageTest))
                .anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
                .position(new LatLng(ltdTest, lngTest)));
 
    }
}
При открытии активности - приложение сразу закрывается. Проблема в строке проверки соединения с БД
Java
1
SQLiteDatabase db = dbHelper.getWritableDatabase();
В другой активности я выбираю фото, сохраняю координаты и путь фото в таблицу, тут включаю проверку соединения и беру данные из таблицы для отображения на карте.
Как это можно исправить ?

Добавлено через 15 часов 41 минуту
Лог с ошибкой
Java
1
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
код класса.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.example.yakubenkoandrii.geotagimages;
 
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
 
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
 
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
 
    private GoogleMap mMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
 
    }
 
 
    DBHelper dbHelper = new DBHelper(this.getBaseContext());
    SQLiteDatabase db = dbHelper.getReadableDatabase();
 
    Cursor c = db.query("geotable", null, null, null, null, null, null);
 
    int imageColIndex = c.getColumnIndex("image");
    int lngColIndex = c.getColumnIndex("lng");
    int latlColIndex = c.getColumnIndex("lat");
    String imageTest = c.getString(imageColIndex);
    double lngTest = c.getDouble(lngColIndex);
    double ltdTest = c.getDouble(latlColIndex);
 
    @Override
    public void onMapReady(GoogleMap googleMap) {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                new LatLng(41.889, -87.622), 16));
 
        // You can customize the marker image using images bundled with
        // your app, or dynamically generated bitmaps.
        googleMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.darth_vader))
                .anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
                .position(new LatLng(41.889, -87.622)));
 
        googleMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromPath(imageTest))
                .anchor(0.0f, 1.0f) // Anchors the marker on the bottom left
                .position(new LatLng(ltdTest, lngTest)));
        dbHelper.close();
    }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
}
Добавлено через 18 часов 58 минут
Разобрался с ошибкой, открывать соединение с БД нужно было в методе onResume().
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 14:56     SQLite и краш активности
Посмотрите здесь:

Изменение настроек приложения из активности в рамках активности - Программирование Android
Друзья, помогите разобраться! имею наработки приложения-рисовалки, там есть у меня там активити (mainactivity) настроек, оттуда...

Краш - кастомный cursoradapter - Программирование Android
Здравствуйте. Пишу программу с базой sqlite уже всю голову сломал. Идея такая если создаю стандартный simplecursoradapter то при...

Сокеты - краш при вызове openConnection - Программирование Android
Приветсвую, встала задача передачи сообщения с телефона (android 6) на ПК, которые подключены к одной сети WiFi. Почитав google пришел к...

Круг для завершения активности - Программирование Android
Здравствуйте! Хочу спросить как можно добиться вот такого результата: Имеется Окружность, а внутри окружности имеется маленькая...

Что лучше, активности или ViewPager? - Программирование Android
Нужно разместить 100-150 экранов информации, на них сверху картинка снизу немного текста + кнопки влево-вправо. Вопрос как правильнее...

Socket подключение не работает в другой активности - Программирование Android
Проблемма такова: при передачи данных из первой активности не работает передача данных с второй активности и наоборот. После того как...

Данные не передаются из одной активности в другую - Программирование Android
Данные не передаются в другую активность... Вот код: Из: Intent inttt = new Intent(hhhhh.this, list.class); inttt.putExtra("vgh",...

Диалог ожидания при запуске активности - Программирование Android
Добрый вечер! При запуске нового Intent происходит задержка. Иногда незначительная, иногда на пару секунд. На время задержки хочу...

Передача данных из одной активности в третью - Программирование Android
Есть главное активити. Оно вызывает второе, второе самоудаляется vtnjljv finish() и вызывает третье. В третьем надо передать данные...

FragmentStatePagerAdapter сохранить состояние между смертями активности - Программирование Android
Доброго времени суток. Есть активность, на ней создаётся базовый фрагмент, которому задаю наследника FragmentStatePagerAdapter, имеющий в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru