Я использую панель действий в действии. Для каждой вкладки я показываю разные макеты. Так как макет слишком тяжелый. Поэтому я раздуваю каждый макет в представление. Итак, на каждой вкладке выберите
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mView == null) {
mView = LayoutInflater.from(mAct).inflate(mLayout, null); // mAct is Activity reference
}
mAct.setContentView(mView);
for (int i = 0; i < mFrags.length; i++) {
mFrags[i] = (LutronFragment) mAct.getFragmentManager()
.findFragmentById(mIds[i]);
if (mFrags[i] != null) {
mFrags[i].setupHeader();
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
for (Fragment f : mFrags) {
try {
if (f != null) {
ft.remove(f);
}
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
Итак, теперь, если я выберу вкладку во второй раз и выполню какую-либо операцию на этой вкладке, приложение выйдет из строя на getActivity. (Исключение NullPointerException)
Пожалуйста, предложите, есть ли другой подход к кэшированию тяжелого макета.