2017-01-18 5 views
0

Итак, я столкнулся с проблемой infamous Can not perform this action after onSaveInstanceState, и мне сложно определить, как ее исправить.Вход в систему LogGan в ViewPager - Не удается выполнить это действие после onSaveInstanceState

В настоящее время я могу вызвать его, выйдя из приложения с помощью меню onNavigationItemSelected.

@SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
    FirebaseAuth.getInstance().signOut(); 
    goToLogin(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
    } 

    private void goToLogin() { 
    Intent x = new Intent(MainActivity.this, LoginActivity.class); 
    startActivity(x); 
    finish(); 
    } 

Хотя, когда я вхожу обратно в приложение

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
startActivityForResult(intent, REQUEST_SIGNUP); 
finish(); 

Затем попытаться щелкнуть в целях утилизатор предмета

CompletedViewPagerFragment completedViewPagerFragment = new CompletedViewPagerFragment(); 
Bundle bundle = new Bundle(); 
bundle.putInt(CompletedViewPagerFragment.KEY_COMPLETED_SELECTED, index); 
completedViewPagerFragment.setArguments(bundle); 

FragmentManager fragmentManager = getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.placeholder, completedViewPagerFragment, VIEWPAGER_FRAGMENT); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

Я получаю onSaveInstanceState ошибку

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1832) 
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1850) 
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:643) 
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:603) 
at com.example.jack.mhealth.MainActivity.onRecordingSelected(MainActivity.java:295) 

I на соблазн использовать .commitAllowingStateLoss(), хотя это дает мне активность была уничтожена ошибку

java.lang.IllegalStateException: Activity has been destroyed 
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1854) 
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:643) 
at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:608) 
at com.example.jack.mhealth.MainActivity.onRecordingSelected(MainActivity.java:294) 

Я действительно потерял то, что пошло не так между каротаж, и заканчивая MainActivity, чтобы затем снова войти в систему и вызывая, что ViewPager для разрыва.

Когда приложение является свежим, оно переходит прямо на экран входа в систему, а затем входит в систему из MainActivity: 75 работает как ожидается при входе в систему. Мне нужно как-то сбросить пейджер представления?

ответ

0

Я собирался удалить этот вопрос из-за того, что нашел ошибку, но думал, что отправлю свое решение, только если кто-то другой столкнется с этой проблемой.

Моя ошибка была я использую класс Singleton, чтобы держать вид PageR адаптера

(я точно не помню, почему я использовал класс одиночки, но это было то, что было причиной ошибки.)