SQLite, помогите разобраться

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 15:06

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

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 15:17

так и на какой она строчке?
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 15:27

на скрине она на 94, лог там староват, там не было Лог.д до этого и она в логах на скрине 93, если возможно как -то отдельно, я дам лоступ через тимвиьювер, чтобы вы мне помогли??

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 08 авг 2014, 15:39

whitestars писал(а):на скрине она на 94, лог там староват, там не было Лог.д до этого и она в логах на скрине 93, если возможно как -то отдельно, я дам лоступ через тимвиьювер, чтобы вы мне помогли??
а можно мне? только мне доступ по ssh нужен и чтобы пользователь в группе админов был... :?: :)
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 15:40

та не пугай человека :lol:
R.id.team

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

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 08 авг 2014, 15:42

Foenix писал(а):та не пугай человека :lol:
да ладно, чего тут бояться то... весело же будет :)
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 15:43

та мне уже весело с твоего сегодняшнего настроения :-D
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: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 15:48

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

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 16:05

Это главное активити [syntax=java5]

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

package com.example.projectsql;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements OnClickListener {
	final String LOG_TAG = "MyLog";
	Button btnAdd, btnRead, btnClear, btnUpdate, btnDelete, btnSort, btnGroup,
	btnHaving, btnSalary;
	EditText etName, etDistrict, etId, etSalary, etPosId;
	RadioGroup rgSort;
	TextView tvDbRowInfo;
	DB db;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btnAdd = (Button) findViewById (R.id.add_button);
		btnAdd.setOnClickListener(MainActivity.this);
		btnRead = (Button) findViewById (R.id.read_button);
		btnRead.setOnClickListener(MainActivity.this);
		btnClear = (Button) findViewById (R.id.clear_button);
		btnClear.setOnClickListener(MainActivity.this);
		btnDelete = (Button) findViewById (R.id.del_button);
		btnDelete.setOnClickListener(MainActivity.this);
		btnUpdate = (Button) findViewById (R.id.upd_button);
		btnUpdate.setOnClickListener(MainActivity.this);
		btnSort = (Button) findViewById (R.id.sort_button);
		btnSort.setOnClickListener(MainActivity.this);
		btnGroup = (Button) findViewById (R.id.group_button);
		btnGroup.setOnClickListener(MainActivity.this);
		btnSalary = (Button) findViewById (R.id.salary_button);
		btnSalary.setOnClickListener(MainActivity.this);
		etName = (EditText) findViewById (R.id.name_editText);
		etDistrict = (EditText) findViewById (R.id.district_editText);
		etId = (EditText) findViewById (R.id.id_editText);
		etPosId = (EditText) findViewById (R.id.posid_editText);
		etSalary = (EditText) findViewById (R.id.salary_editText);
		tvDbRowInfo = (TextView) findViewById (R.id.tvDbRowView);
		rgSort = (RadioGroup) findViewById (R.id.rg_Sort);
		db = new DB(this);
		db.open();

	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		String name = etName.getText().toString();
		String district = etDistrict.getText().toString();
		String id = etId.getText().toString();
		String posid = etPosId.getText().toString();
		String salary = etSalary.getText().toString();
		String orderBy = null;
		switch (v.getId()){
		case R.id.add_button:
			db.addRec(name, district, posid);
			break;
		case R.id.read_button:
			Intent intent = new Intent(MainActivity.this, ListActivity.class);
			startActivity(intent);
			break;
		case R.id.clear_button:
			Log.d(LOG_TAG, "-Clear my table--");
			db.delTbl();
			Log.d(LOG_TAG, "Deleted rows count");
			tvDbRowInfo.setText("");
			break;
		case R.id.upd_button:
			if (id.equalsIgnoreCase("")){
				break;
			}
			Log.d(LOG_TAG, "-Update my rows--");
			db.updRec(id, name, district, posid);
			Log.d(LOG_TAG, "Update rows count");
			break;
		case R.id.del_button:
			if (id.equalsIgnoreCase("")){
				break;
			}
			Log.d(LOG_TAG, "-Delete my rows--");
			db.delRec(id);
			Log.d(LOG_TAG, "Delete rows count ");
			break;
		case R.id.salary_button:
			Log.d(LOG_TAG, "Salary more than.." + salary + "----");
			db.grpSalary(salary);
			break;
		case R.id.group_button:
			Log.d(LOG_TAG, "Group for district..");
			db.grpDistrict();
			break;
		case R.id.sort_button:
			switch (rgSort.getCheckedRadioButtonId()) {
				case (R.id.rg_district):
					Log.d(LOG_TAG, "Sorting by district..");
					orderBy = "district";
					break;
				case (R.id.rg_position):
					Log.d(LOG_TAG, "Sorting by position..");
					orderBy = "position";
					break;
				case (R.id.rg_salary):
					Log.d(LOG_TAG, "Sorting by salary..");
					orderBy = "salary";
					break;
			}
			db.sorting(orderBy);
			break;
		}
}
	protected void onDestroy() {
		super.onDestroy();
		db.close();
	}
	/*void logCursor(Cursor c) {
		if (c != null) {
			if (c.moveToFirst()) {
				String str;
				do {
					str = "";
					for (String cn : c.getColumnNames()) {
						str = str.concat (cn + " = " + c.getString(c.getColumnIndex(cn)) + ";");
					}
					Log.d(LOG_TAG, str);
				} while (c.moveToNext());
			}
		} else Log.d(LOG_TAG, "Cursor is null");
	}*/	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}	
}
[/syntax]
--------------------------------------------------------------------------------------
Это второстепенное активити
[syntax=java5]

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

package com.example.projectsql;

import java.util.concurrent.TimeUnit;

import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;

public class ListActivity extends FragmentActivity implements LoaderCallbacks<Cursor> {
	final static String LOG_TAG1 = "ListLogs";
	private static final int CM_DELETE_ID = 1;
	ListView lvData;
	SimpleCursorAdapter scAdapter;
	DB db;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.list_main_view);
		String[] from = new String[] {DB.COLUMN_NAME_P, DB.COLUMN_DISTRICT_P, DB.COLUMN_SALARY_POS};
		int[] to = new int[] {R.id.name_textView, R.id.position_textView, R.id.salary_textView};
		scAdapter = new SimpleCursorAdapter (this, R.layout.item, null, from, to, 0);
		lvData = (ListView) findViewById (R.id.data_listView);
		lvData.setAdapter(scAdapter);
		registerForContextMenu(lvData);
		getSupportLoaderManager().initLoader(0, null, this);
		getSupportLoaderManager().getLoader(0).forceLoad();
}
	public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
		menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
	}
	public boolean onContextItemSelected (MenuItem item) {
		if (item.getItemId() == CM_DELETE_ID) {
			AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
			String ida = acmi.toString();
			db.delRec(ida);
			getSupportLoaderManager().getLoader(0).forceLoad();
			return true;
		}
		return super.onContextItemSelected(item);
	}
	@Override
	public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
		// TODO Auto-generated method stub
		return new MyCursorLoader (this, db);
	}
	@Override
	public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
		// TODO Auto-generated method stub
		scAdapter.swapCursor(cursor);
	}
	@Override
	public void onLoaderReset(Loader<Cursor> arg0) {
		// TODO Auto-generated method stub
		
	}
	static class MyCursorLoader extends CursorLoader {
		DB db;
		public MyCursorLoader (Context context, DB db) {
			super (context);
			db = this.db;
		}
		public Cursor loadInBackground() {
			Log.d(LOG_TAG1, "Loading started");
			Cursor cursor = db.getAllDataP();
			try {
				TimeUnit.SECONDS.sleep(3);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			return cursor;
		}
	}
}
[/syntax]
------------------------------------------------------------------
Это класс ДБ

[syntax=java5]

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

package com.example.projectsql;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DB {
	final String LOG_TAG = "MyLog";
	private static final String DB_NAME = "TestDb";
	private static final int DB_VERSION = 2;
	private static final String DB_TABLE_P = "people";
	private static final String DB_TABLE_POS = "position";
	public static final String COLUMN_ID_P = "id";
	public static final String COLUMN_NAME_P = "name";
	public static final String COLUMN_DISTRICT_P = "district";
	private static final String COLUMN_POSID_P = "posid";
	private static final String COLUMN_ID_POS = "_id";
	private static final String COLUMN_NAME_POS = "_name";
	public static final String COLUMN_SALARY_POS = "_salary";
	private static final String DB_CREATE_P = 
			"create table " + DB_TABLE_P + "(" + 
					COLUMN_ID_P + " integer primary key autoincrement, " + 
					COLUMN_NAME_P + " text," + 
					COLUMN_DISTRICT_P + " text, " +
					COLUMN_POSID_P + " integer" + 
					");";
	private static final String DB_CREATE_POS = 
			"create table " + DB_TABLE_POS + "(" + 
					COLUMN_ID_POS + " integer primary key autoincrement, " +
					COLUMN_NAME_POS + " text, " + 
					COLUMN_SALARY_POS + " text" + 
					");";
	private final Context mCtx;
	private DBHelper mDBHelper;
	private SQLiteDatabase mDB;
	int[] position_id = {1, 2, 3, 4};
	String[] position_name = {"Director", "Programmer", "Buhgalter", "Security"};
	int[] position_salary = {15000, 13000, 10000, 8000};
	String table = "people as PL inner join position as PS on PL.posid = PS.id";
	String []columns = new String[] {"PL.name as Name", "PS._name as Position", "_salary as Salary"};
	public DB (Context ctx) {
		mCtx = ctx;
	}
	public void open() {
		mDBHelper = new DBHelper (mCtx, DB_NAME, null, DB_VERSION);
		mDB = mDBHelper.getWritableDatabase();
	}
	public void close() {
		if (mDBHelper != null) mDBHelper.close();
	}
	public Cursor getAllDataP() {
		return mDB.query(DB_TABLE_P, null, null, null, null, null, null);
	}
	public Cursor getAllDataPOS() {
		return mDB.query(DB_TABLE_POS, null, null, null, null, null, null);
	}
	public void addRec (String _name, String _district, String _posid) {
		ContentValues cvRow = new ContentValues();
		cvRow.put(COLUMN_NAME_P, _name);
		cvRow.put(COLUMN_DISTRICT_P, _district);
		cvRow.put(COLUMN_POSID_P, _posid);
		long rowId = mDB.insert(DB_TABLE_P, null, cvRow);
		Log.d(LOG_TAG, "Create row ID = " + rowId);
	}
	public void delRec (String _id) {
		mDB.delete(DB_TABLE_P, COLUMN_ID_P + "=" + _id, null);
	}
	public void updRec (String _uid, String _name, String _district, String _posid) {
		ContentValues cvRow = new ContentValues();
		cvRow.put(COLUMN_NAME_P, _name);
		cvRow.put(COLUMN_DISTRICT_P, _district);
		cvRow.put(COLUMN_POSID_P, _posid);
		mDB.update(DB_TABLE_P, cvRow, "id = ?", new String[] {_uid});
	}
	public void delTbl () {
		mDB.delete(DB_TABLE_P, null, null);
	}
	public void grpSalary (String _salary) {
	String sqlRawQuery = "select PL.name as Name, PS._name as Position, _salary as Salary"
			+ "from people as PL"
			+ "inner join position as PS"
			+ "on PL.posid = PS._id"
			+ "where _salary > ?";	
	mDB.rawQuery(sqlRawQuery, new String[] {_salary});
	}
	public void grpDistrict () {
		String groupBy = "district";
		mDB.query(table, columns, null, null, groupBy, null, null);
	}
	public void sorting(String _orderBy) {
		mDB.query(table, columns, null, null, null, null, _orderBy);
	}
	private class DBHelper extends SQLiteOpenHelper {
		public DBHelper ( Context context, String name, CursorFactory factory, int version) {
			super (context, name, factory, version);
		}
	public void onCreate (SQLiteDatabase mDB) {
		ContentValues cvRow = new ContentValues();
		mDB.execSQL(DB_CREATE_P);
		mDB.execSQL(DB_CREATE_POS);
		Log.d(LOG_TAG, "Create database complete...");
		for (int i = 0; i < position_id.length; i++) {
			cvRow.clear();
			cvRow.put(COLUMN_ID_POS, position_id[i]);
			cvRow.put(COLUMN_NAME_POS, position_name[i]);
			cvRow.put(COLUMN_SALARY_POS, position_salary[i]);
			mDB.insert("position", null, cvRow);
			
		}
	}
	public void onUpgrade(SQLiteDatabase mDB, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		}
	}
	}
[/syntax]

Пользуйся тегом CODE в редакторе, не стесняйся.

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 16:11

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

08-08 13:04:30.439: E/Trace(775): error opening trace file: No such file or directory (2)
08-08 13:06:14.749: E/AndroidRuntime(775): FATAL EXCEPTION: ModernAsyncTask #2
08-08 13:06:14.749: E/AndroidRuntime(775): java.lang.RuntimeException: An error occured while executing doInBackground()
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:137)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.FutureTask.run(FutureTask.java:239)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.lang.Thread.run(Thread.java:856)
08-08 13:06:14.749: E/AndroidRuntime(775): Caused by: java.lang.NullPointerException
08-08 13:06:14.749: E/AndroidRuntime(775): 	at com.example.projectsql.ListActivity$MyCursorLoader.loadInBackground(ListActivity.java:77)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:35)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:242)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123)
08-08 13:06:14.749: E/AndroidRuntime(775): 	at java.util.concurrent.FutureTask.run(FutureTask.java:234)
08-08 13:06:14.749: E/AndroidRuntime(775): 	... 3 more

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 08 авг 2014, 16:18

[syntax=java5]static class MyCursorLoader extends CursorLoader {
DB db;
public MyCursorLoader (Context context, DB db) {
super (context);
db = this.db;
}
public Cursor loadInBackground() {
Log.d(LOG_TAG1, "Loading started");
Cursor cursor = db.getAllDataP();
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
return cursor;
}
}
}[/syntax]

null.getAllDataP() работать не будет.

Мне не трудно повторить второй раз.. запустите профилировщик и посмотрите что у вас в переменной db...
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 16:37

Странная какая-то реализация..
а это зачем?
[syntax=java5]try {

TimeUnit.SECONDS.sleep(3);

} catch (InterruptedException e) {

e.printStackTrace();

}[/syntax]
R.id.team

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

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 08 авг 2014, 16:45

Foenix писал(а):Странная какая-то реализация..
а это зачем?
[syntax=java5]try {

TimeUnit.SECONDS.sleep(3);

} catch (InterruptedException e) {

e.printStackTrace();

}[/syntax]
чтобы nullPointerException не сразу возвращался, этот код в течении 3-х секунд оставляет надежду, но чтобы этот "хак" работал - поместить его нужно до строчки 77 ( Cursor cursor = db.getAllDataP(); ) :)

P.S. по теме: я конечно согласен с тем, что вызов конструктора через new - это маветон... и DI рулит, но всетаки переменные не только объявлять нужно но и инстанциировать( только с 3 раза правильно это слово написал... :mrgreen: )
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 16:47

а подкласс лоадера зачем?
(ты меня щас саму испугал разными незнакомыми терминами :-D)
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: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 16:48

еще и статик
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 20:30

ну что касается таймюнит, это задержка выполнения чтения базы данных типо имитация долгого получения данных с БД, чисто для интереса как работает
насчет подкласса надо было переопределить метод лоадонбекграунд где я должен получать данные из своей бд) вы вобще урок 136 стартандроида смотрели?)

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 22:43

нет, мы не смотрели, мы вебинар смотрели :)
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 09 авг 2014, 11:03

вообщем я не понимаю тыкните пальцем, где и че надо сделать, проверил саму базу в файловом менеджере, данные туда записываются, пытался объявлял конструктор дб, ничего не получается, почему то не получает данные с дб, кто то может закинуть для интереса мой код к себе и проверить как он работает, и отладить как надо??

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

static class MyCursorLoader extends CursorLoader {
		DB db;
		Context ctx;
		public MyCursorLoader (Context context, DB db) {
			super (context);
			db = this.db;
			db = new DB (ctx);
		}
Или подскажите, кто действительно, может помочь делом, а не стебаться на новичком...???

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 09 авг 2014, 13:10

Посмотри мой вебинар по этой теме.
http://www.youtube.com/watch?v=QEqGgmMkRDk
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 09 авг 2014, 14:07

Инна, щас гляну)) спасибо надеюсь он решит мою проблему...
Просмотрел, мало что понял, тяжело воспринимается, когда человек не показывает, четко отработанный пример, но я так и не понял, почему я должен применять контент-провайдер, когда по сути я могу обойтись без него, просто я по какой-то причине на курсор не получаю данные, или курсор лоадер работает не посредственно в связке с контент провайдером? почему тогда в 136 уроке вебинара, человек обходится без
контент -провайдера?
Часть текста из начала урока 136: "CursorLoader представляет собой наследника класса AsyncTaskLoader<Cursor> и по умолчанию заточен на работу с ContentProvider, т.к. при работе требует Uri. Мы же в этом примере используем его для работы со своей БД. Для этого нам придется его расширить и вставить свою реализацию в его основной метод."
Что я и делал... Проблема в другом я не получаю данные в курсор из базы, хотя база не пуста...
Просто переделывать весь код чтобы он работал от контент провайдера, когда реализация та же самая даже проще, и не факт что приложение будет норм работать, или появятся новые подводные камни, так как на вебинаре, нет четкого отработанного примера, где была бы реализована ситуация, что в одном активити мы работаем с базой на уровне редактирования, а в другом активити читаем и получаем из нее данные с помощью списка ...

Ответить