Я пытаюсь сохранить вставленные данные моего приложения в базе данных.Поэтому я выбрал базу данных SQLiteDatabase, потому что это то, что я видел в своей нанодегрессии.Теперь я нахожусь в точке, где я хочу нажать на элемент из ListView и перейти к EditorActivity.Когда я кодирую CursorLoader в EditorActivity.java, чтобы показать вставленные данные и обновить их , приложение падает до того, как оно даже запустится ...
деятельность редактора (здесь она называется MainActivity, но здесь есть поля EditText):
public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>{
private static final int EXISTING_CONTAINER_LOADER = 0;
DexamenesCursorAdapter mCursorAdapter;
private Uri mCurrentContainerUri;
(...)
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
// Since the editor shows all container attributes, define a projection that contains
// all columns from the container table
String[] projection = {
DexameniEntry._ID,
DexameniEntry.COLUMN_a,
DexameniEntry.COLUMN_b,
DexameniEntry.COLUMN_c,};
// This loader will execute the ContentProvider's query method on a background thread
return new CursorLoader(this,
mCurrentContainerUri,
projection,
null,
null,
null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data){
if (data.moveToFirst()) {
if (data.moveToFirst()) {
// Find the columns of pet attributes that we're interested in
int aColumnIndex = data.getColumnIndex(DexameniEntry.COLUMN_a);
int bColumnIndex = data.getColumnIndex(DexameniEntry.COLUMN_b);
int cColumnIndex = data.getColumnIndex(DexameniEntry.COLUMN_c);
// Extract out the value from the Cursor for the given column index
int a = data.getInt(aColumnIndex);
int b = data.getInt(bColumnIndex);
int c = data.getInt(cColumnIndex);
// Update the views on the screen with the values from the database
mEditX1a.setText(Integer.toString(a));
mEditX1b.setText(Integer.toString(b));
mEditX1c.setText(Integer.toString(c));
}
mCursorAdapter.swapCursor(data);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mCursorAdapter.swapCursor(null);
}
Вот logcat …
2018-11-28 15:51:44.853 26449-26470/com.example.android.deyalcalculator
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.android.deyalcalculator, PID: 26449
java.lang.RuntimeException: An error occurred while executing
doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
Caused by: java.lang.NullPointerException: uri
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:111)
at android.content.ContentResolver.query(ContentResolver.java:515)
at android.content.CursorLoader.loadInBackground(CursorLoader.java:64)
at android.content.CursorLoader.loadInBackground(CursorLoader.java:56)
at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312)
at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69)
at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:66)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL: PATH3 /odm/lib64/hw/gralloc.qcom.so
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL: PATH2 /vendor/lib64/hw/gralloc.qcom.so
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL: PATH1 /system/lib64/hw/gralloc.qcom.so
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL:
PATH3 /odm/lib64/hw/gralloc.msm8953.so
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL: PATH2 /vendor/lib64/hw/gralloc.msm8953.so
2018-11-28 15:51:44.891 26449-26449/com.example.android.deyalcalculator E/HAL: PATH1 /system/lib64/hw/gralloc.msm8953.so
Я не знаюкак решить эту проблему.Я даже не знаю, является ли SQLiteDatabase лучшим выбором, если честно, потому что я хочу, чтобы приложение сохраняло данные измерений качества воды в компании и создавало графики (как в акциисвязанное приложение) в течение длительного периода времени (график измерения недели, месяца, года)…
Есть ли у кого-нибудь какие-либо идеи по поводу решения конкретной проблемы или вообще более эффективный способ хранения таких данных?? Пожалуйста ... (Я устал и отчаянно собираюсь писать)