SQLite, помогите разобраться
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
я нашел ошибку исправить не могу, не знаю что там исправлять)) сори что такой дотошный)
Re: SQLite, помогите разобраться
так и на какой она строчке?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
на скрине она на 94, лог там староват, там не было Лог.д до этого и она в логах на скрине 93, если возможно как -то отдельно, я дам лоступ через тимвиьювер, чтобы вы мне помогли??
Re: SQLite, помогите разобраться
а можно мне? только мне доступ по ssh нужен и чтобы пользователь в группе админов был...whitestars писал(а):на скрине она на 94, лог там староват, там не было Лог.д до этого и она в логах на скрине 93, если возможно как -то отдельно, я дам лоступ через тимвиьювер, чтобы вы мне помогли??
Re: SQLite, помогите разобраться
та не пугай человека
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: SQLite, помогите разобраться
да ладно, чего тут бояться то... весело же будетFoenix писал(а):та не пугай человека
Re: SQLite, помогите разобраться
та мне уже весело с твоего сегодняшнего настроения
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: SQLite, помогите разобраться
автор, давай сюда не картинки, а кусок лога с адресом ошибки - и указанием на какую строчку щелкаешь и полный метод, куда попадаешь когда щелкаешь на адрес.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
Это главное активити [syntax=java5]
[/syntax]
--------------------------------------------------------------------------------------
Это второстепенное активити
[syntax=java5][/syntax]
------------------------------------------------------------------
Это класс ДБ
[syntax=java5][/syntax]
Пользуйся тегом CODE в редакторе, не стесняйся.
Код: Выделить всё
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=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=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
}
}
}
Пользуйся тегом CODE в редакторе, не стесняйся.
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
Код: Выделить всё
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
Re: SQLite, помогите разобраться
[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...
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...
Re: SQLite, помогите разобраться
Странная какая-то реализация..
а это зачем?
[syntax=java5]try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}[/syntax]
а это зачем?
[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
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: SQLite, помогите разобраться
чтобы nullPointerException не сразу возвращался, этот код в течении 3-х секунд оставляет надежду, но чтобы этот "хак" работал - поместить его нужно до строчки 77 ( Cursor cursor = db.getAllDataP(); )Foenix писал(а):Странная какая-то реализация..
а это зачем?
[syntax=java5]try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}[/syntax]
P.S. по теме: я конечно согласен с тем, что вызов конструктора через new - это маветон... и DI рулит, но всетаки переменные не только объявлять нужно но и инстанциировать( только с 3 раза правильно это слово написал... )
Re: SQLite, помогите разобраться
а подкласс лоадера зачем?
(ты меня щас саму испугал разными незнакомыми терминами )
(ты меня щас саму испугал разными незнакомыми терминами )
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: SQLite, помогите разобраться
еще и статик
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
ну что касается таймюнит, это задержка выполнения чтения базы данных типо имитация долгого получения данных с БД, чисто для интереса как работает
насчет подкласса надо было переопределить метод лоадонбекграунд где я должен получать данные из своей бд) вы вобще урок 136 стартандроида смотрели?)
насчет подкласса надо было переопределить метод лоадонбекграунд где я должен получать данные из своей бд) вы вобще урок 136 стартандроида смотрели?)
Re: SQLite, помогите разобраться
нет, мы не смотрели, мы вебинар смотрели
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
вообщем я не понимаю тыкните пальцем, где и че надо сделать, проверил саму базу в файловом менеджере, данные туда записываются, пытался объявлял конструктор дб, ничего не получается, почему то не получает данные с дб, кто то может закинуть для интереса мой код к себе и проверить как он работает, и отладить как надо??
Или подскажите, кто действительно, может помочь делом, а не стебаться на новичком...???
Код: Выделить всё
static class MyCursorLoader extends CursorLoader {
DB db;
Context ctx;
public MyCursorLoader (Context context, DB db) {
super (context);
db = this.db;
db = new DB (ctx);
}
Re: SQLite, помогите разобраться
Посмотри мой вебинар по этой теме.
http://www.youtube.com/watch?v=QEqGgmMkRDk
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
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 33
- Зарегистрирован: 07 авг 2014, 13:09
Re: SQLite, помогите разобраться
Инна, щас гляну)) спасибо надеюсь он решит мою проблему...
Просмотрел, мало что понял, тяжело воспринимается, когда человек не показывает, четко отработанный пример, но я так и не понял, почему я должен применять контент-провайдер, когда по сути я могу обойтись без него, просто я по какой-то причине на курсор не получаю данные, или курсор лоадер работает не посредственно в связке с контент провайдером? почему тогда в 136 уроке вебинара, человек обходится без
контент -провайдера?
Часть текста из начала урока 136: "CursorLoader представляет собой наследника класса AsyncTaskLoader<Cursor> и по умолчанию заточен на работу с ContentProvider, т.к. при работе требует Uri. Мы же в этом примере используем его для работы со своей БД. Для этого нам придется его расширить и вставить свою реализацию в его основной метод."
Что я и делал... Проблема в другом я не получаю данные в курсор из базы, хотя база не пуста...
Просто переделывать весь код чтобы он работал от контент провайдера, когда реализация та же самая даже проще, и не факт что приложение будет норм работать, или появятся новые подводные камни, так как на вебинаре, нет четкого отработанного примера, где была бы реализована ситуация, что в одном активити мы работаем с базой на уровне редактирования, а в другом активити читаем и получаем из нее данные с помощью списка ...
Просмотрел, мало что понял, тяжело воспринимается, когда человек не показывает, четко отработанный пример, но я так и не понял, почему я должен применять контент-провайдер, когда по сути я могу обойтись без него, просто я по какой-то причине на курсор не получаю данные, или курсор лоадер работает не посредственно в связке с контент провайдером? почему тогда в 136 уроке вебинара, человек обходится без
контент -провайдера?
Часть текста из начала урока 136: "CursorLoader представляет собой наследника класса AsyncTaskLoader<Cursor> и по умолчанию заточен на работу с ContentProvider, т.к. при работе требует Uri. Мы же в этом примере используем его для работы со своей БД. Для этого нам придется его расширить и вставить свою реализацию в его основной метод."
Что я и делал... Проблема в другом я не получаю данные в курсор из базы, хотя база не пуста...
Просто переделывать весь код чтобы он работал от контент провайдера, когда реализация та же самая даже проще, и не факт что приложение будет норм работать, или появятся новые подводные камни, так как на вебинаре, нет четкого отработанного примера, где была бы реализована ситуация, что в одном активити мы работаем с базой на уровне редактирования, а в другом активити читаем и получаем из нее данные с помощью списка ...