私はアクティビティでアクションバーを使用しています。各タブごとに異なるレイアウトを表示しています。レイアウトが重すぎるので。だから私はビューに各レイアウトを膨らませている。だから、それぞれのタブに今、私はタブ秒の時間を選択した場合android getアクティビティが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にクラッシュします。(NullPointerExceptionが)にはいくつかの別のアプローチがある場合
が提案して下さいキャッシュの重いレイアウト。
あなたは 'mAct'がnullになると言っていますか? また、レイアウトのキャッシュには何の意味もありません。フォアグラウンドには進行状況ダイアログや中間ユーザー対話型画面のようなユーザーインターフェイスが必要ですが、バックグラウンドではレイアウトの読み込みが必要です。 最後に、レイアウトの重さを減らすか、必要に応じて要素を読み込むことを検討してください。レイアウトxmlを投稿して実際に重いかどうか確認できますか? – gaara87