我在活動上使用Action Bar。對於每個標籤,我都顯示不同的佈局。由於佈局太重。所以我將每個佈局充滿一個視圖。因此,在每個選項卡中選擇android get activity返回null
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。(空指針異常)
請建議,如果有一些其他的方法來緩存繁重的佈局。
你是說'mAct'變爲空嗎? 此外,緩存佈局沒有意義,您應該做的是在後檯布局加載,而前臺應該有一些用戶界面,如進度對話框或某種中間用戶可以互動的屏幕。 最後,考慮減少佈局的權重,或按需加載元素。你可以發佈你的佈局xml,看它是否真的很重嗎? – gaara87 2012-07-18 07:31:09