2012-03-14 2 views
0

В предыдущем вопросе я вывесил (который содержит весь код)колонка _id не существует, - но я уверен, что он делает

Unable to substantiate activity ComponentInfo - Null Pointer Exception

у меня была ошибка nullexception, howver отбив эту ошибку во время выполнения, я споткнулся о другой. журнал кошка:

03-14 17:43:25.169: ERROR/AndroidRuntime(339): FATAL EXCEPTION: main 
03-14 17:43:25.169: ERROR/AndroidRuntime(339): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.dbtest/com.android.dbtest.ShowActivity}: java.lang.IllegalArgumentException: column '_id' does not exist 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.os.Looper.loop(Looper.java:123) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at dalvik.system.NativeStart.main(Native Method) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.widget.CursorAdapter.init(CursorAdapter.java:111) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.widget.CursorAdapter.<init>(CursorAdapter.java:90) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at com.android.dbtest.ShowActivity.onCreate(ShowActivity.java:45) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
03-14 17:43:25.169: ERROR/AndroidRuntime(339):  ... 11 more 

эта проблема возникает после того, как шоу кнопка была нажата и ShowActivity запускается (ответ на ссылку выше относительно где инициализировать listcontent реализовано) - однако, это сейчас кажется для отказа из-за colum _id. Что, насколько я могу видеть, инициализируется в моем адаптере.

Любая помощь, благосклонно принятая.

EDIT: Добавлен следующий код - и addign комментарий ниже

package com.android.dbtest; 

import android.database.Cursor; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.SimpleCursorAdapter; 

public class AddActivity extends DatabaseTestActivity{ 

private SQLiteAdapter mySQLiteAdapter; 
private String jobId; 

SimpleCursorAdapter cursorAdapter; 
Cursor cursor; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add); 
    // TODO Auto-generated method stub 

    final EditText jobIdInput = (EditText) findViewById(R.id.jobText); 
    //final EditText address1Input = (EditText) findViewById(R.id.add1Text); to be implemented 

    /************************************************** 
    * 
    * Get text Input from Edit Text Fields 
    * 
    ***************************************************/ 

    jobIdInput.addTextChangedListener(new TextWatcher(){ 

     @Override 
     public void afterTextChanged(Editable id) { 
      jobId = jobIdInput.getText().toString(); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 

     } 

    }); 

    /*************************************************** 
    * 
    * initialise Database 
    * 
    * 
    ***************************************************/ 
    mySQLiteAdapter = new SQLiteAdapter(this); 

    /***************************************************** 
    * Listen for Confirm button press 
    ******************************************************/ 

    final Button confirm = (Button)findViewById(R.id.confirmButt); 

    confirm.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      mySQLiteAdapter.openToWrite(); 
      mySQLiteAdapter.insert(jobId); 
      mySQLiteAdapter.close(); 
     } 

    }); 

    /*********************************************************** 
    * write jobId into SQl in the above method for button press 
    * 
    *************************************************************/  
} 
} 
+0

Попробуйте поднять номер версии своей БД. Если у вас не было _id в версии 1, а затем добавлено в _id, ваша БД не будет отражать это до тех пор, пока ваша версия # не будет увеличена. – dymmeh

+0

Итак, вы создаете столбец _id в своем операторе CREATE TABlE (как правило, это делается где-то в onCreateDatabase() в классе SQLiteHelper, который, как я полагаю) –

+0

@dymmeh - я попробовал обновленную версию, без радости, спасибо все равно. – CornishDibley

ответ

0

Удалось решить ответ; из-за того, что база данных фактически не создавалась. Это не повлияло на изменения версии, более того, решение было в том, чтобы инициализировать базу данных в главной базе данныхTestActivity NOT AddActivty !!

Конечно, нет, я ударил прямо в другое исключение NullPointerException, но по крайней мере сейчас это другая проблема.

0

Как @CornishDibley уже сказал, я думаю, вы должны удалить базу данных из телефона вы/эмулятора. Насколько я знаю, есть два способа сделать это:

  1. Go для управления приложениями >> выбрать приложение >> хит четких данных
  2. Просто удалите приложение, как @CornishDibley сказали

Это должно решить вашу проблему версии

Подсказка: Поместите трассировки журналов отладки программы и отслеживать каждую функцию, которая получает exectuted. Посмотрите, выполняется ли onCreat. Если нет, ваш старый файл базы данных все еще существует (насколько мне известно)

+0

Я добавил дополнительный текст для моей AddActivity (действия при нажатии кнопки добавления) - чтение того, что было сказано и важно после тегов, я думаю, мне удалось сузить, что onCreate БД не вызывается - возможно, я прав, думая об этом?однако я думал: mySQLiteAdapter = новый SQLiteAdapter (это); сделал именно это - однако моя точка останова и вход в oncreate не запускаются! – CornishDibley

+0

Да, это именно то, что мы ожидали. Вы удалили приложение с вашего телефона или эмулятора «вручную»? –

+0

Hi G Nag - Да, я удалил его с моего телефона. Я также помещаю Log.v в OnCreate(), и notchign записывается в моем журнале. Кроме того, я пробовал смотреть прямо в БД через sqlite3 и, кажется, указывает, что у меня нет вызова datbase MY_DATABASE - я думаю, что он просто не является beign, созданным вообще! – CornishDibley