2014-12-17 5 views
0

Я разработал приложение для Android, и она работает отлично, но иногда бросает странную ошибку:Странная ошибка в super.onStart();

Если заявка была выполнена раньше, и вы выполнить его снова, только иногда, он бросает мне следующую ошибку: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0.

Странная часть этого (по крайней мере, для меня, потому что я не эксперт по Android) заключается в том, что, кроме того, это не всегда происходит, заключается в том, что первая точка, появляющаяся в журнале ошибок, равна super.onStart(); строка моего main.java, и я ничего не имею перед этой строкой.

Вот мой OnStart метод:

@Override 
protected void onStart() { 
    super.onStart(); 

    mPager.setOffscreenPageLimit(4); 

    mPager.setPageTransformer(true, new ZoomOutPageTransformer()); 
} 

Вот журнал ошибок:

... 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418) 
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 
    at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68) 
    at mysql.BaseDatos.getAsignaturaDataBase(BaseDatos.java:233) 
    at com.tfd.myapp.FragmentAsig.onCreateView(FragmentAsig.java:269) 
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
    at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1877) 
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552) 
    at com.tfd.myapp.Principal.onStart(Principal.java:108) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1166) 
    at android.app.Activity.performStart(Activity.java:5254) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2043) 
... 

Как это может быть?

+0

Какой класс деятельности вы распространяете? – akohout

+0

Не уверен, что это вам поможет: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java#L1160 У вас когда-нибудь была возможность отладить такой крах? Или это происходит только в режиме без отладки? :) – akohout

+1

Если у вас есть курсор в вашем суперклассе, проверьте, есть ли у него какие-либо данные, перед использованием объекта курсора. if (cursor.moveToFirst()) { // если курсор содержит данные, первый объект; тогда сделайте свою работу здесь } – vembutech

ответ

1

onStart() выполняет любые транзакции ожидающих фрагментов. В этом случае он включает в себя создание экземпляра вашего FragmentAsig и ошибка там. В частности:

at mysql.BaseDatos.getAsignaturaDataBase(BaseDatos.java:233) 
at com.tfd.myapp.FragmentAsig.onCreateView(FragmentAsig.java:269) 

вы звоните getInt() на Cursor, который не имеет никаких данных. Вам необходимо проверить, например, moveToFirst() преуспел.

+0

Благодарим вас за информацию и помощь! – JCoder

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