2013-12-18 3 views
0

Хорошо ... У меня проблема, если я запустил приложение, я получаю ошибку. Не могу прочитать строку 0, от cursorwindow, im полностью запутался, может кто-то объяснить n debug этот вопрос для меня.Не удалось прочитать строку 0, от CursorWindow

спасибо.

Код сообщение

package com.example.activitytracker02; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.graphics.Color; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class Scheduler extends Activity { 

String ddate,valueActivity,dduration,sstime,fftime; 
private Spinner activitySpinner; 
SQLiteDatabase db; 
TableRow tableRow; 
    TextView textView,textView1,textView2,textView3,textView4,textView5,textView6,textView7,textView8,textView9; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scheduler); 
    db=openOrCreateDatabase("MyDB1",MODE_PRIVATE, null); 
    db.execSQL("CREATE TABLE IF NOT EXISTS Scheduler101(valueDay VARCHAR,valueActivity VARCHAR,dduration VARCHAR,sstime VARCHAR,fftime VARCHAR);"); 
} 

public void Submit(View view) 
{ 
    EditText edittext1=(EditText)findViewById(R.id.editText1); 
    EditText edittext2=(EditText)findViewById(R.id.editText2); 
    EditText edittext3=(EditText)findViewById(R.id.editText3); 
    EditText edittext4=(EditText)findViewById(R.id.editText4); 

    activitySpinner = (Spinner)findViewById(R.id.activitySpinner); 
    dduration=edittext1.getText().toString(); 
    sstime=edittext2.getText().toString(); 
    fftime=edittext3.getText().toString(); 
    ddate=edittext4.getText().toString(); 
    valueActivity = String.valueOf(activitySpinner.getSelectedItem()); 
    db.execSQL("INSERT INTO Scheduler101 VALUES('"+ddate+"','"+valueActivity+"','"+dduration+"','"+sstime+"','"+fftime+"');"); 
} 

public void Show(View view) 
{ 
    Cursor c=db.rawQuery("SELECT * from Scheduler101", null); 
    int count= c.getCount(); 
    c.moveToFirst(); 
    TableLayout tableLayout = new TableLayout(getApplicationContext()); 
    tableLayout.setVerticalScrollBarEnabled(true); 
    TableRow tableRow; 
    TextView textView,textView1,textView2,textView3,textView4,textView5,textView6,textView7,textView8,textView9; 
    tableRow = new TableRow(getApplicationContext()); 
    textView=new TextView(getApplicationContext()); 
    textView.setText("Date(DD/MM/YYYY)"); 
    textView.setTextColor(Color.RED); 
    textView.setTypeface(null, Typeface.BOLD); 
    textView.setPadding(20, 20, 20, 20); 
    tableRow.addView(textView); 
    textView4=new TextView(getApplicationContext()); 
    textView4.setText("Activity"); 
    textView4.setTextColor(Color.RED); 
    textView4.setTypeface(null, Typeface.BOLD); 
    textView4.setPadding(20, 20, 20, 20); 
    tableRow.addView(textView4); 
    textView5=new TextView(getApplicationContext()); 
    textView5.setText("Duration(Minutes)"); 
    textView5.setTextColor(Color.RED); 
    textView5.setTypeface(null, Typeface.BOLD); 
    textView5.setPadding(20, 20, 20, 20); 
    tableRow.addView(textView5); 
    textView6=new TextView(getApplicationContext()); 
    textView6.setText("Start Time"); 
    textView6.setTextColor(Color.RED); 
    textView6.setTypeface(null, Typeface.BOLD); 
    textView6.setPadding(20, 20, 20, 20); 
    tableRow.addView(textView6); 
    textView7=new TextView(getApplicationContext()); 
    textView7.setText("Finish Time"); 
    textView7.setTextColor(Color.RED); 
    textView7.setTypeface(null, Typeface.BOLD); 
    textView7.setPadding(20, 20, 20, 20); 
    tableRow.addView(textView7); 
    tableLayout.addView(tableRow); 
    for (Integer j = 0; j < count; j++) 
    { 
     tableRow = new TableRow(getApplicationContext()); 
     textView1 = new TextView(getApplicationContext()); 
     textView1.setText(c.getString(c.getColumnIndex("ddate"))); 
     textView2 = new TextView(getApplicationContext()); 
     textView2.setText(c.getString(c.getColumnIndex("valueActivity"))); 
     textView3 = new TextView(getApplicationContext()); 
     textView3.setText(c.getString(c.getColumnIndex("dduration"))); 
     textView8 = new TextView(getApplicationContext()); 
     textView8.setText(c.getString(c.getColumnIndex("sstime"))); 
     textView9 = new TextView(getApplicationContext()); 
     textView9.setText(c.getString(c.getColumnIndex("fftime"))); 
     textView1.setPadding(20, 20, 20, 20); 
     textView2.setPadding(20, 20, 20, 20); 
     textView3.setPadding(20, 20, 20, 20); 
     textView8.setPadding(20, 20, 20, 20); 
     textView9.setPadding(20, 20, 20, 20); 
     tableRow.addView(textView1); 
     tableRow.addView(textView2); 
     tableRow.addView(textView3); 
     tableRow.addView(textView8); 
     tableRow.addView(textView9); 
     tableLayout.addView(tableRow); 
     c.moveToNext() ; 
    } 
    setContentView(tableLayout); 
db.close(); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.scheduler, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 

switch (item.getItemId()) 
{ 
case R.id.menu_next: 
    Intent a =new Intent(Scheduler.this, ViewActivities.class); 
     startActivityForResult(a,0); 
case R.id.menu_back: 
    Intent b =new Intent(Scheduler.this, AddNewProfile.class); 
     startActivityForResult(b,0); 
default: 
return super.onOptionsItemSelected(item); 
} 

    } 
} 

ошибка:

12-17 21:14:53.311: E/CursorWindow(3198): Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 5 columns. 
12-17 21:14:53.311: D/AndroidRuntime(3198): Shutting down VM 
12-17 21:14:53.311: W/dalvikvm(3198): threadid=1: thread exiting with uncaught exception (group=0xb3ac5b90) 
12-17 21:14:53.371: E/AndroidRuntime(3198): FATAL EXCEPTION: main 
12-17 21:14:53.371: E/AndroidRuntime(3198): Process: com.example.activitytracker02, PID: 3198 
12-17 21:14:53.371: E/AndroidRuntime(3198): java.lang.IllegalStateException: Could not execute method of the activity 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.view.View$1.onClick(View.java:3814) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.view.View.performClick(View.java:4424) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.view.View$PerformClick.run(View.java:18383) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.os.Handler.handleCallback(Handler.java:733) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.os.Handler.dispatchMessage(Handler.java:95) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.os.Looper.loop(Looper.java:137) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.app.ActivityThread.main(ActivityThread.java:4998) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at java.lang.reflect.Method.invoke(Method.java:515) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at dalvik.system.NativeStart.main(Native Method) 
12-17 21:14:53.371: E/AndroidRuntime(3198): Caused by: java.lang.reflect.InvocationTargetException 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at java.lang.reflect.Method.invoke(Method.java:515) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.view.View$1.onClick(View.java:3809) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  ... 11 more 
12-17 21:14:53.371: E/AndroidRuntime(3198): Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.database.CursorWindow.nativeGetString(Native Method) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.database.CursorWindow.getString(CursorWindow.java:434) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  at com.example.activitytracker02.Scheduler.Show(Scheduler.java:96) 
12-17 21:14:53.371: E/AndroidRuntime(3198):  ... 14 more 
12-17 21:19:53.671: I/Process(3198): Sending signal. PID: 3198 SIG: 9 
12-17 21:19:59.871: D/dalvikvm(3303): GC_FOR_ALLOC freed 51K, 5% free 2850K/2972K, paused 43ms, total 45ms 
12-17 21:20:00.171: D/dalvikvm(3303): GC_FOR_ALLOC freed 49K, 4% free 3298K/3424K, paused 38ms, total 41ms 
12-17 21:20:00.671: D/(3303): HostConnection::get() New Host Connection established 0xb724b0a8, tid 3303 
12-17 21:20:00.981: W/EGL_emulation(3303): eglSurfaceAttrib not implemented 
12-17 21:20:01.001: D/OpenGLRenderer(3303): Enabling debug mode 0 
12-17 21:30:18.551: D/dalvikvm(3348): GC_FOR_ALLOC freed 55K, 5% free 2850K/2976K, paused 43ms, total 45ms 
12-17 21:30:18.801: D/dalvikvm(3348): GC_FOR_ALLOC freed 49K, 4% free 3297K/3416K, paused 32ms, total 34ms 
12-17 21:30:19.081: D/(3348): HostConnection::get() New Host Connection established 0xb7107c28, tid 3348 
12-17 21:30:19.381: W/EGL_emulation(3348): eglSurfaceAttrib not implemented 
12-17 21:30:19.401: D/OpenGLRenderer(3348): Enabling debug mode 0 
12-17 21:30:30.951: W/EGL_emulation(3348): eglSurfaceAttrib not implemented 
+0

Кажется л ike нет ни одного имени столбца для одного из этих столбцов: «ddate, valueActivity, dduration, sstime, fftime», поэтому «c.getColumnIndex» возвращает -1. Проверьте имя столбца. Надеюсь это поможет. – user2652394

+0

В моем заявлении о создании я забыл заменить valueDay на ddate – Ish

ответ

0

Попробуйте изменить:

textView1.setText(c.getString(c.getColumnIndex("ddate"))); 

к:

textView1.setText(c.getString(c.getColumnIndex("valueDay"))); 
+0

В моем заявлении о создании я забыл заменить valueDay на ddate. Это также может работать, спасибо ребятам – Ish

+0

Чтобы избежать таких ошибок, вы можете определить имя базы данных, имена таблиц, имена колонок в отдельном классе Database Helper. Его стоит проверить следующую ссылку. [Ссылка] (http://www.androidhive.info/2013/09/android-sqlite-database-with-multiple-tables/) –

Смежные вопросы