私はナビゲーション・ドロワーをホストしている簡単なアクティビティを持っています。そのエントリの1つはWebViewであり、負荷がかかります(Gmailが表示されるので、厄介なリダイレクトにはかなりの時間がかかります)。NavigationDrawerから選択した場合のフラグメントの再作成を防ぐには?
異なる選択が行われた場合でも断片を保持したいと思います。私はこれらのソリューションがうまくいくと考えました。彼らはしなかった。
1)のフラグメントを再作成しない:mWebmailFragment が実際 nullでない場合でも、onCreateView()はどのような場合に呼び出されます。
2)onCreateView()が呼び出された場合、WebViewオブジェクトの状態を保持することができます。まあ、そうではありません。デバッグ私は、savedInstanceStateが、常にであることを発見しました。どうしてか分かりません。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
// Retain instance
setRetainInstance(true);
//....
// SavedState
if (savedInstanceState != null) {
mWebView.restoreState(savedInstanceState);
} else {
// do stuff
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mWebView.saveState(outState);
}
フラグメントを別のフラグメントに変更するにはどうすればよいですか?それらを "置き換える"場合は、代わりに "show()"と "hide()"を試してみてください。 – Maximosaic
あなたはこれまでの解決策を見つけましたか? –
いいえ...私は「すべてを隠す」ロジックを使っていましたが、向きが変わったときにもすべてがうまくいきます。当分の間、私はポートレートモードでUIを強制的に解決しましたが、どれくらいの限界があるかを理解することができます。 – Gianluca