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

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

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

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

22.01.2016, 14:56. Просмотров 357. Ответов 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().
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 14:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SQLite и краш активности (Программирование Android):

Краш при создании активности - Программирование Android
public class Main_Activity extends Activity { private class LogIn extends AsyncTask<Void, Void, Void> { @Override ...

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

Краш приложения - Программирование Android
Здравствуйте! Решил научиться делать приложения для андройд. Через SDK Manager установил пакеты Android 2.2 и 4.2 (в каждом пакете выбрал...

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

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

Отслеживание активности - Программирование Android
В java не смыслю ни чего не разу его даже не видел. Интересует как такие вещи как антивирус или вирус отслеживают активность. К примеру...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2016, 14:56
Привет! Вот еще темы с ответами:

NullPointerException в дополнительной активности - Программирование Android
Доброй ночи. Постараюсь сразу изложить проблему. Есть код, который через php-прослойку, по ссылке, получает данные из mysql БД, через...

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

Сохранение состояния активности - Программирование Android
Всем привет, в ходе разработки клиента для сервера возник такой вопрос, можно ли сохранить состояние активности при запуске другой...

Изменение фона активности - Программирование Android
Здравствуйте, посетители форума! Захотел поменять фон активности. Добавил в RelativeLayout атрибут background="@drawable/bg" - не...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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