private void startListFragments(Bundle savedInstanceState, Uri accountsUri, Uri allowedKeysUri) { // However, if we're being restored from a previous state, // then we don't need to do anything and should return or else // we could end up with overlapping fragments. if (savedInstanceState != null) { return; } // show accounts only if available (deprecated API) Cursor cursor = getContentResolver().query(accountsUri, null, null, null, null); if (cursor != null && cursor.moveToFirst()) try { mAccountsLabel.setVisibility(View.VISIBLE); mAccountsListFragment = AccountsListFragment.newInstance(accountsUri); // Create an instance of the fragments getSupportFragmentManager() .beginTransaction() .replace(R.id.api_accounts_list_fragment, mAccountsListFragment) .commitAllowingStateLoss(); } finally { cursor.close(); } // Create an instance of the fragments mAllowedKeysFragment = AppSettingsAllowedKeysListFragment.newInstance(allowedKeysUri); // Add the fragment to the 'fragment_container' FrameLayout // NOTE: We use commitAllowingStateLoss() to prevent weird crashes! getSupportFragmentManager() .beginTransaction() .replace(R.id.api_allowed_keys_list_fragment, mAllowedKeysFragment) .commitAllowingStateLoss(); // do it immediately! getSupportFragmentManager().executePendingTransactions(); }
@Override public Fragment getItem(int i) { AccountsListFragment currentFragment; switch (i) { case INDEX_RECENT_ACCOUNTS_FRAGMENT: currentFragment = AccountsListFragment.newInstance(AccountsListFragment.DisplayMode.RECENT); break; case INDEX_FAVORITE_ACCOUNTS_FRAGMENT: currentFragment = AccountsListFragment.newInstance(AccountsListFragment.DisplayMode.FAVORITES); break; case INDEX_TOP_LEVEL_ACCOUNTS_FRAGMENT: default: currentFragment = AccountsListFragment.newInstance(AccountsListFragment.DisplayMode.TOP_LEVEL); break; } mFragmentPageReferenceMap.put(i, currentFragment); return currentFragment; }