Le dernier lien ne s'ouvre pas tout en revenant à partir d'un autre onglet Et aussi Onpause () ne fonctionne pas. Cela montre que Null Pointer Exception et APP se ferme automatiquement en cliquant sur un autre onglet, sauf la première. Code de l'onglet Fragment
public class MainActivity extends FragmentActivity {
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
mTabHost.addTab(
mTabHost.newTabSpec("tab1").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.home)),
FragmentTab.class, null);
mTabHost.addTab(
mTabHost.newTabSpec("tab2").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.deals_offers)),
FragmentTab.class, null);
mTabHost.addTab(
mTabHost.newTabSpec("tab3").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.profile)),
FragmentTab.class, null);
mTabHost.addTab(
mTabHost.newTabSpec("tab4").setIndicator(null, ContextCompat.getDrawable(this, R.drawable.menu)),
FragmentTab.class, null);
}
}
3 Réponses :
ressemble à mywebView toujours null dans votre code:
public class FragmentTab extends Fragment {
protected WebView myWebView;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_layout, container, false);
myWebView = (WebView) v.findViewById(R.id.webview);
// instead of WebView myWebView = (WebView) v.findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
if(savedInstanceState != null)
myWebView.restoreState(savedInstanceState);
else
myWebView.loadUrl("http://www.example.com");
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
myWebView.saveState(outState);
}
}
pareil qu'avant ! Il ne sauve pas le dernier état
/**
* Restores the state of this WebView from the given Bundle. This method is
* intended for use in {@link android.app.Activity#onRestoreInstanceState}
* and should be called to restore the state of this WebView. If
* it is called after this WebView has had a chance to build state (load
* pages, create a back/forward list, etc.) there may be undesirable
* side-effects. Please note that this method no longer restores the
* display data for this WebView.
*
* @param inState the incoming Bundle of state
* @return the restored back/forward list or null if restoreState failed
*/
public WebBackForwardList restoreState(Bundle inState) {
checkThread();
return mProvider.restoreState(inState);
}
Utilisez cette bibliothèque: https://github.com/frankiesardo/icepick
Supprimer protégé de webview p> ajoutez la ligne suivante dans votre méthode d'activité, le repos sera manipulé. p> dans méthode oncreate p> dans OnsaveInstancestate P> @Override public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
Icepick.saveInstanceState(this, outState);
}
J'utilise toujours SeretatainStance (True); Pour les fragments pour éviter de recréer après des modifications de configuration
aucun changement ! Après avoir utilisé SetRetainStance (TRUE);
Définissez MyWebView et ClientwebView en tant que champs statiques en plus de fragment et utilisez Conserver l'état
Je ne peux pas te faire. S'il vous plaît donner dans les détails!
Après chaque modification des configurations d'interface utilisateur, comme le fragment de rotation, exécutez sa méthode OnCreateView, vous devez donc définir MyWebView comme champ statique sur votre fragment pour éviter de les réinitialiser à chaque fois
Faites aussi pour WebViewClient vous avez attribué. Désolé im sur le téléphone et c'est difficile à coder ici.
J'ai cherché ce genre de problème et j'ai trouvé ce devaHead.com/blog/2012/01/... peut être cela vous aidera.