Ответ 1
Когда вы вызывали viewA.setTag( "FragmentA" ), группа просмотра не была инициализирована. Это является прямой причиной этого исключения.
Чтобы избежать этой проблемы, вам необходимо установить тег после того, как была создана группа viewGroup, т.е. вы надули макет представления или создали фрагмент.
Например, код по умолчанию для элемента instantiateItem для FragmentStatePagerAdapter выглядит следующим образом.
@Override
public Object instantiateItem(ViewGroup container, int position) {
// If we already have this item instantiated, there is nothing
// to do. This can happen when we are restoring the entire pager
// from its saved state, where the fragment manager has already
// taken care of restoring the fragments we previously had instantiated.
if (mFragments.size() > position) {
Fragment f = mFragments.get(position);
if (f != null) {
return f;
}
}
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
Fragment fragment = getItem(position);
if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
if (mSavedState.size() > position) {
Fragment.SavedState fss = mSavedState.get(position);
if (fss != null) {
fragment.setInitialSavedState(fss);
}
}
while (mFragments.size() <= position) {
mFragments.add(null);
}
fragment.setMenuVisibility(false);
fragment.setUserVisibleHint(false);
mFragments.set(position, fragment);
mCurTransaction.add(container.getId(), fragment);
return fragment;
}
Вы можете установить тег в методе getItem при создании фрагмента/представления.