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

SQLite и краш активности - Android

Восстановить пароль Регистрация
Другие темы раздела
Android Как подогнать ряд кнопок в TableLayout под ширину экрана? http://www.cyberforum.ru/android-dev/thread1643857.html
День добрый. Пишу игру простенькую Крестики-нолики. Поле состоит квадрата 3x3 из Кнопок, которые генерируются в коде. Размер кнопки устанавливается при создании. button.setWidth(100); button.setHeight(100); Но на разных телефонах кнопки естественно по разному (где-то маленькие кнопки, а где-то не влазят целиком в экран), т.к. метод setWidth задает все в пикселях.
Android GPS координаты public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); //Метод получения контактных данных getContacts(); // на выходе output - содержит все контакты String lng; String lat; http://www.cyberforum.ru/android-dev/thread1643772.html
Ругается на FragmentTransaction Android
Пишу Bluetooth-чат. Пример был взят с GoogleDev. Студия ругается мол символ неизвестный, хотя библиотеку подключил, в чем проблема? p.s. Фрагментами никогда не занимался p.s.s. Часть кода, например код создания конт. меню и лога закомментирована, т.к. не нужна import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle;
Android Локализация приложения
Добрый вечер! Интересует следующий вопрос, в андроид локализация приложения происходит в автоматическом режиме в зависимости от установленного языка на устройстве, но можно ли программно управлять данным процессом? Например, указать строковые значения какого языка подгрузить, либо чтобы строковые значения из strings.xml брались согласно настроек устройства, а звуковое сопровождение (из папок...
Android Dx.bat выдает ошибку http://www.cyberforum.ru/android-dev/thread1643359.html
При вызове: drStudio>call C:\Users\user\AppData\Local\Android\sdk\build-tools\23.0.1\dx.bat --dex --output=C:\AndrStudio\bin\classes.dex C:\AndrStudio\obj Выдается ошибка: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.RuntimeException: Exception parsing classes
Android Разметка под Андроид Нужна помощь в верстке, пишите кто сможет помочь Дубль темы во Фрилансе, закрыто подробнее

Показать сообщение отдельно
Andrew9
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 89
22.01.2016, 14:56     SQLite и краш активности
Всем привет, подскажите в чем дело.
Есть класс
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().
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru