Страница 5 из 19
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 14:16
Serious
Дак создаю.
Код: Выделить всё
public class MainActivity extends Activity {
DataModel datamodel = new DataModel();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
datamodel.init();
}
Вообще каждый шаг вывожу в лог. И судя по всему вываливается на строчке
в классе DB.java
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 14:27
Foenix
что значит "судя по всему"? в списке ошибок двойной щелчок по строке с ошибкой и адресу в вашей программе перенесет вас в эту строчку
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 14:28
Foenix
Вот весь стек, вызывавший ошибку
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 17:45
Serious
Olivka писал(а):что значит "судя по всему"? в списке ошибок двойной щелчок по строке с ошибкой и адресу в вашей программе перенесет вас в эту строчку
Ну лог перед этой строкой еще срабатывает.
Olivka писал(а):Вот весь стек, вызывавший ошибку
E/AndroidRuntime(23004): at ru.sr.DB.open(DB.java:60)
E/AndroidRuntime(23004): at ru.sr.DataModel.init(DataModel.java:20)
E/AndroidRuntime(23004): at ru.sr.MainActivity.onCreate(MainActivity.java:31)
Ну я вижу стек, но не понимаю из-за чего возникает ошибка.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 18:01
Foenix
ну я же не вижу где у вас строчка 60, и вы судя по всему тоже
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 19:00
Serious
Olivka писал(а):ну я же не вижу где у вас строчка 60, и вы судя по всему тоже
А что не так в строчке 60 ? Неправильно пытаюсь открыть подключение к базе ?
Скорее всего какая то простая глупая ошибка. Но я не понимаю где и в чем.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 19:49
Foenix
ошибка в строчке 60. Так говорит лог.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 20:03
Serious
Olivka писал(а):ошибка в строчке 60. Так говорит лог.
Строчка 60 это
в классе DB.java
Не могли бы вы подсказать как убрать эту ошибку ?
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 20:22
rezak90
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 20:23
rezak90
сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 20:31
Serious
rezak90 писал(а):сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать
Ну спасибо за помощь )))))
буду ковырятся раз такое дело.
А урок с дебагером, вам надо было одним из первых сделать.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 22:15
Foenix
Serious писал(а):
А урок с дебагером, вам надо было одним из первых сделать.
ХОрошая постановка вопроса..
Вот ты определил, где ошибка, а привести код этого DB.java разве не нужно, чтоб можно было понять почему у тебя там null передается-то..? Этот код и нужно было приводить..
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 18 мар 2013, 22:43
Serious
Olivka писал(а):Serious писал(а):
А урок с дебагером, вам надо было одним из первых сделать.
ХОрошая постановка вопроса..
Вот ты определил, где ошибка, а привести код этого DB.java разве не нужно, чтоб можно было понять почему у тебя там null передается-то..? Этот код и нужно было приводить..
Класс DB.java взят из этого урока.
Код: Выделить всё
public class DB {
//DataModel datamodel;
final String LOG_TAG = "myLogs";
private static final String DB_NAME = "serversdb";
private static final int DB_VERSION = 1;
private static final String DB_TABLE = "server";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_LOGIN = "login";
public static final String COLUMN_PASSWORD = "password";
public static final String COLUMN_IP = "ip";
public static final String COLUMN_PORT = "port";
public static final String COLUMN_DOMAIN = "domain";
public static final String COLUMN_ENCRYP_KEY = "encryption_key";
public static final String COLUMN_SAVE_PASS = "save_pass";
private static final String DB_CREATE =
"create table " + DB_TABLE + "(" +
COLUMN_ID + " integer primary key autoincrement, " +
COLUMN_NAME + " text, " +
COLUMN_LOGIN + " text, " +
COLUMN_PASSWORD + " text, " +
COLUMN_IP + " text, " +
COLUMN_PORT + " text, " +
COLUMN_DOMAIN + " text, " +
COLUMN_ENCRYP_KEY + " text, " +
COLUMN_SAVE_PASS + " text" +
");";
private final Context mCtx;
private DBHelper mDBHelper;
private SQLiteDatabase mDB;
public DB(Context ctx) {
mCtx = ctx;
}
// открыть подключение
public void open() {
Log.d(LOG_TAG, "--- open connect database ---");
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
Log.d(LOG_TAG, "--- 2 open connect database ---");
mDB = mDBHelper.getWritableDatabase();
Log.d(LOG_TAG, "--- 3 open connect database ---");
}
// закрыть подключение
public void close() {
Log.d(LOG_TAG, "--- close connect database ---");
if (mDBHelper!=null) mDBHelper.close();
}
// получить все данные из таблицы DB_TABLE
public Cursor getAllData() {
Log.d(LOG_TAG, "--- getALL ROWS database ---");
return mDB.query(DB_TABLE, null, null, null, null, null, null);
}
// добавить запись в DB_TABLE
public void addRec(String name, String login, String pass, String ip,
String port, String domain, String encryp_key, String save_pass) {
Log.d(LOG_TAG, "--- addREC database ---");
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME, name);
cv.put(COLUMN_LOGIN, login);
cv.put(COLUMN_PASSWORD, pass);
cv.put(COLUMN_IP, ip);
cv.put(COLUMN_PORT, port);
cv.put(COLUMN_DOMAIN, domain);
cv.put(COLUMN_ENCRYP_KEY, encryp_key);
cv.put(COLUMN_SAVE_PASS, save_pass);
mDB.insert(DB_TABLE, null, cv);
}
// удалить запись из DB_TABLE
public void delRec(long id) {
mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
}
// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
Log.d(LOG_TAG, "--- DBHelper ---");
}
// создаем и заполняем БД
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "--- onCreate database ---");
db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 01:28
Foenix
Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 10:37
Serious
Olivka писал(а):Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
Видимо я где то жестко туплю, но я ведь создаю переменную класса.
Код: Выделить всё
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
datamodel = new DataModel();
datamodel.init();
}
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 11:59
Foenix
ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса? Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 12:29
Serious
Olivka писал(а):ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
Создание переменной класса было вне метода, засунул в метод. Ничего не изменилось.
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса?
Это метод класса MainActivity.java
Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.
Наверно ошибка в этом. Попытался вынести в отдельный класс public class DBHelper extends SQLiteOpenHelper.
Ошибка по прежнему осталась.
Спасибо за подсказку, буду пробовать что нибудь.
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 14:20
rezak90
лучше бы выклали уже проект быстрее бы помогли
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 19 мар 2013, 14:59
Foenix
Re: Урок 52. SimpleCursorAdapter, пример использования
Добавлено: 20 мар 2013, 09:22
Serious