Урок 52. SimpleCursorAdapter, пример использования

Обсуждение уроков
Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 14:16

Дак создаю.

Код: Выделить всё

public class MainActivity extends Activity {

	DataModel datamodel = new DataModel();
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		datamodel.init();
	}

Вообще каждый шаг вывожу в лог. И судя по всему вываливается на строчке

Код: Выделить всё

 mDB = mDBHelper.getWritableDatabase();
в классе DB.java

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 18 мар 2013, 14:27

что значит "судя по всему"? в списке ошибок двойной щелчок по строке с ошибкой и адресу в вашей программе перенесет вас в эту строчку
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 18 мар 2013, 14:28

Вот весь стек, вызывавший ошибку
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)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 17:45

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)
Ну я вижу стек, но не понимаю из-за чего возникает ошибка.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 18 мар 2013, 18:01

ну я же не вижу где у вас строчка 60, и вы судя по всему тоже
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 19:00

Olivka писал(а):ну я же не вижу где у вас строчка 60, и вы судя по всему тоже
А что не так в строчке 60 ? Неправильно пытаюсь открыть подключение к базе ?
Скорее всего какая то простая глупая ошибка. Но я не понимаю где и в чем.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 18 мар 2013, 19:49

ошибка в строчке 60. Так говорит лог.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 20:03

Olivka писал(а):ошибка в строчке 60. Так говорит лог.

Строчка 60 это

Код: Выделить всё

  mDB = mDBHelper.getWritableDatabase();
в классе DB.java
Не могли бы вы подсказать как убрать эту ошибку ?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 18 мар 2013, 20:22

Изображение
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 18 мар 2013, 20:23

сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать
R.id.team
Политика на форуме запрещена

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 20:31

rezak90 писал(а):сорри, не удержался, я думаю что пришло время сделать туториал по пользованию дебагером, сегодня попробую что то накарлякать

Ну спасибо за помощь )))))
буду ковырятся раз такое дело.

А урок с дебагером, вам надо было одним из первых сделать.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 18 мар 2013, 22:15

Serious писал(а): А урок с дебагером, вам надо было одним из первых сделать.
ХОрошая постановка вопроса..
Вот ты определил, где ошибка, а привести код этого DB.java разве не нужно, чтоб можно было понять почему у тебя там null передается-то..? Этот код и нужно было приводить..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 18 мар 2013, 22:43

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) {
	    }
	  }
	}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 19 мар 2013, 01:28

Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 19 мар 2013, 10:37

Olivka писал(а):Ошибка простая, еще раз повторяю, нужно перед datamodel.init(); написать создание переменной datamodel. Нуллпоинтер вылетает тогда, когда ты обращаешься к экземпляру класса, его методу, не созав экземпляр. Такое можно делать только со статическими методами.
Видимо я где то жестко туплю, но я ведь создаю переменную класса.

Код: Выделить всё

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		datamodel = new DataModel();
		datamodel.init();
	}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 19 мар 2013, 11:59

ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса? Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 19 мар 2013, 12:29

Olivka писал(а):ага, теперь показываешь уже метод с созданием. и что? ошибка не изменилась?
Создание переменной класса было вне метода, засунул в метод. Ничего не изменилось.
А вообще у тебя, конечно, настоящая каша из вопроса. Этот метод onCreate() это метод какого класса?
Это метод класса MainActivity.java
Ты скопировал наверное код из урока главной активности, так там класс с private class DBHelper extends SQLiteOpenHelper {
объявлен как private, к нему нельзя обратиться из другой активности
Нужно сделать отделдьный класс piublic class DBHelper extends SQLiteOpenHelper {...
и к нему обращатсья из других мест, создавать и использовать.
Наверно ошибка в этом. Попытался вынести в отдельный класс public class DBHelper extends SQLiteOpenHelper.
Ошибка по прежнему осталась.
Спасибо за подсказку, буду пробовать что нибудь.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение rezak90 » 19 мар 2013, 14:20

лучше бы выклали уже проект быстрее бы помогли
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Foenix » 19 мар 2013, 14:59

Примеров в сети полно. Сделай как тут http://www.mysamplecode.com/2012/07/and ... qlite.html
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Serious
Сообщения: 22
Зарегистрирован: 18 мар 2013, 13:45

Re: Урок 52. SimpleCursorAdapter, пример использования

Сообщение Serious » 20 мар 2013, 09:22

Выкладываю проект.

http://zalil.ru/34363954

Ответить