【问题标题】:How to save data to SQLite using Content provider and Asynctask如何使用 Content provider 和 Asynctask 将数据保存到 SQLite
【发布时间】:2015-12-25 19:54:32
【问题描述】:

我在使用ContentProviderAsynctask 将我的数据保存到数据库SQLite 时遇到问题,这是我的代码

BtnSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String JudulSesi = String.valueOf(judulSesi.getText());
            String Description = String.valueOf(Ket.getText());
            ContentValues contentValues = new ContentValues();

            contentValues.put(LocalDBHandler.FIELD_SESSION_TYPE, sessionType);
            contentValues.put(LocalDBHandler.FIELD_SESSION_NAME, JudulSesi);
            contentValues.put(LocalDBHandler.FIELD_SESSION_DESC, Description);
            contentValues.put(LocalDBHandler.FIELD_SESSION_TIME,Date.toString());
            contentValues.put(LocalDBHandler.FIELD_ELAPSED_TIME, dataTimeElapsed );
            contentValues.put(LocalDBHandler.FIELD_ARRAYPOINT,stringPoint);
            contentValues.put(LocalDBHandler.FIELD_DISTANCE, dataJarak);
            contentValues.put(LocalDBHandler.FIELD_SPEED, speed);
            contentValues.put(LocalDBHandler.FIELD_HEART_RATE, heartRate);
            contentValues.put(LocalDBHandler.FIELD_CALLORIES, callorie);

            SaveToDatabase savetoDB = new SaveToDatabase();

            savetoDB.execute(contentValues);

            Toast.makeText(SaveSession.this, "You Click Save Button", Toast.LENGTH_SHORT).show();

        }
    });

private class SaveToDatabase extends AsyncTask<ContentValues,Void,Void>{
    @Override
    protected Void doInBackground(ContentValues... contentValues) {
        getContentResolver().insert(Uri.parse(LocalDBHandler.DATABASE_TABLE),contentValues[0]);
        return null;
    }
}

当我运行我的程序时,它已关闭,这是 logcat 结果

12-26 02:21:43.236 8436-9787/com.armand17.runandride E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #5 Process: com.armand17.runandride, PID: 8436 java.lang.RuntimeException: An error occurred while executing doInBackground()
  at android.os.AsyncTask$3.done(AsyncTask.java:309)
  atjava.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 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
  at java.lang.Thread.run(Thread.java:818)
  Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_ride
  at android.content.ContentResolver.insert(ContentResolver.java:1227)
  at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:143)
  at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:140)
  at android.os.AsyncTask$2.call(AsyncTask.java:295)
  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
  at java.lang.Thread.run(Thread.java:818) 

它说我的Asynctask出错了,但我不知道它在哪里。

【问题讨论】:

    标签: android sqlite android-asynctask android-contentprovider


    【解决方案1】:

    问题出在这里:

    Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_rideandroid.content.ContentResolver.insert(ContentResolver.java:1227)

    您的一个名字 (run_and_ride) 无效。检查您在数据库和LocalDBHandler 中的姓名,并根据this 检查您的清单。

    【讨论】:

      猜你喜欢
      • 2011-09-10
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2023-01-02
      • 2021-12-01
      • 2014-10-15
      相关资源
      最近更新 更多