public void reloadAccounts() {
    if (getActivity() == null) return;
    mAccounts = new ArrayList<>();
    View addAccountFrame = mAccountsFrame.findViewById(R.id.addAccountFrame);
    mAccountsFrame.removeAllViews();
    mAccountsFrame.addView(addAccountFrame);
    int mCurrent = Account.getActive(getActivity());

    if (mCurrent == -1) {
      Account acc = AccountProvider.add(getActivity(), null, Account.TYPE_LOCAL);
      mAccounts.add(acc);
      Account.setActive(getActivity(), acc);
      mCurrent = acc.id();
    }

    final int fCurrent = mCurrent;
    Account.getAll(
        getActivity(),
        new Account.AccountsCallback() {
          @Override
          public void onAccounts(Account[] accounts) {
            if (accounts == null || !isAdded()) return;
            for (int i = 0; i < accounts.length; i++) {
              Account a = accounts[i];
              mAccounts.add(a);
              boolean selected = a.id() == fCurrent;
              mAccountsFrame.addView(getAccountView(i, selected ? i : -1, mAccountsFrame), i);
              if (selected) getAlbums(a);
            }
            mAccountsFrame.requestLayout();
            mAccountsFrame.invalidate();
          }
        });
  }