Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Frai32
0 / 2 / 1
Регистрация: 24.08.2013
Сообщений: 137
#1

Появляется CursorIndexOutOfBoundsException

12.02.2015, 14:39. Просмотров 1009. Ответов 3
Метки нет (Все метки)

Пытаюсь присвоить значение из таблицы таким способом:

Java
1
2
String sID = cursor.getString(indexOfID);
где indexOfID это indexOfID = cursor.getColumnIndex(DBExport.COLUMN_ID);
На что получаю исключение:

that are not also 02-12 21:24:00.599: E/AndroidRuntime(5686): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5


Почему такое исключение появляться?

и как от него избавиться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2015, 14:39
Ответы с готовыми решениями:

не появляется java файл
Создаю java файл в папке проекта он есть а Eclipse его не показывает он 5 по...

Не появляется приложение в genymotion
Запускаю андроид-проект на эклипсе. Вроде все норм, лог пишет, что "Success!...

AlertDialog появляется дважды
При вызове приложения появляется AlertDialog. Когда закрываю его он появляется...

Виджет не появляется в списке виджетов
Разбираю урок 117 проекта startandroid, делаю все как в уроке, но виджет не...

Виджет Android 4.1 не появляется в списке
Добрый вечер, уважаемые форумчане. Учусь создавать приложения для андройда,...

3
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
12.02.2015, 14:58 #2
А где cursor.moveToNext()?
И не весь код приведен.
0
Frai32
0 / 2 / 1
Регистрация: 24.08.2013
Сообщений: 137
12.02.2015, 16:06  [ТС] #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.example.tacticalgenirator;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
 
public class MainActivity extends ActionBarActivity implements OnClickListener {
 
    TextView tvObjective,
             tvDiscription;
     Button btGenirate;
     ListView lvObjective;
     Random random;
    SimpleCursorAdapter scAdapter;
    DBExport dbe;
    DB  db;
    String[] from;  
    int[] to;
    int indexOfID=0;
    Cursor cursor, cursor1;
    List<Integer> ObjectivList = new ArrayList<Integer>();
    String sID;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        tvObjective = (TextView) findViewById(R.id.tvObjectiv);
        tvDiscription =(TextView) findViewById(R.id.tvDescription);
        btGenirate = (Button) findViewById(R.id.btGenirate);
        lvObjective = (ListView) findViewById(R.id.lvObjectiv);
        
        ObjectivList.add(0);
        
        random = new Random();
        dbe = new DBExport(this);
        dbe.open();
        dbe.Check();
        dbe.OpenDATABASE();
        
        db = new DB(this);
        db.open();
        
        cursor = dbe.getAllData();
        cursor1 = db.getAllData();
        startManagingCursor(cursor);
        startManagingCursor(cursor1);
        indexOfID = cursor.getColumnIndex(DBExport.COLUMN_ID);
        crRightListView();
        
        btGenirate.setOnClickListener(this);
        
        
        //      if (savedInstanceState == null) {
//          getSupportFragmentManager().beginTransaction()
//                  .add(R.id.container, new fragView()).commit();
//      }
    }
    
    private void crRightListView()
      {
              String[] from1 = new String[] { DB.COLUMN_TID, DB.COLUMN_NAME};
              int[] to1 = new int[] {R.id.tvTID, R.id.tvName };
              scAdapter = new SimpleCursorAdapter(this, R.layout.bd_item, cursor1, from1, to1);
              lvObjective.setAdapter(scAdapter);
              
            
       }
    
    private void GenirateObjective()
    {
         db.addRec(cursor.getInt(cursor.getColumnIndex(DBExport.COLUMN_ID)), 
                   cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_NAME)), 
                   cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_DS)),
                   cursor.getInt(cursor.getColumnIndex(DBExport.COLUMN_TID)));
                 // cursor.getInt(nameColIndexCO));
         
            cursor.requery();
    }
 
    @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);
    }
 
    public void onClick(View v) {
        switch (v.getId()) 
        {
            case R.id.btGenirate:
                int Res = random.nextInt(6+1);
                 sID = cursor.getString(indexOfID);
//              String sName = cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_NAME));
//              String sDiscription = cursor.getString(cursor.getColumnIndex(DBExport.COLUMN_DS));
//              for(int i = 0; i<ObjectivList.size(); i++)
//              {
//                if ( ObjectivList.contains(Res))
//                {
//                    break;
//                    
//                }
//                else
//                    ObjectivList.add(Res);
//                    if(Res == cursor.getInt(cursor.getColumnIndex(DBExport.COLUMN_ID)))
//                    {
//                      GenirateObjective();
//                      tvObjective.setText(sID +" : "+sName);
//                      tvDiscription.setText(sDiscription);
//                      break;
//                    }
//                
//                    
//              }
//              
//              for(int i = 0; i<ObjectivList.size(); i++)
//              {
//                Log.d("tag",""+ObjectivList.get(i));
//                    
//              }
                
            break;
            default:
            break;
        }
    }
    
 
}
Вот весь код. И что за метод cursor.moveToNext()?

Добавлено через 25 минут
Я добавил метод cursor.moveToNext() и код начал компилироваться,оказывается он нужен.

Добавлено через 33 минуты
У меня возник вопрос как сделать что бы после закрытия приложения поля в таблице БД обнулялись?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
12.02.2015, 16:24 #4
Цитата Сообщение от Frai32 Посмотреть сообщение
Я добавил метод cursor.moveToNext() и код начал компилироваться,оказывается он нужен.
Конечно нужен, курсор этож множество.
Цитата Сообщение от Frai32 Посмотреть сообщение
У меня возник вопрос как сделать что бы после закрытия приложения поля в таблице БД обнулялись?
Повесить на кнопку выхода db.execSQL("DROP TABLE IF EXISTS " + MY_TABLE);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2015, 16:24

На телефоне виджет не появляется в списке виджетов
Добрый день! Сделал виджет - устанавливается и работает на планшете Asus...

При запуске приложения появляется клавиатура
В приложении есть текстовое поле EditText в xml файле, а ниже находятся кнопки....

AppWidget: виджет не появляется на некоторых девайсах
Здравствуйте. форумчане! Есть вопрос, связанный с нестабильным поведением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru