gpt4 book ai didi

android - onSaveInstanceState 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:52:05 25 4
gpt4 key购买 nike

从其他选项卡返回时最后一个链接没有打开而且 onPause() 也不起作用。它显示空指针异常并且应用程序在单击除第一个选项卡之外的其他选项卡时自动关闭。 fragment 标签代码

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);
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);
}
}

这是 MainActivity

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);
}
}

最佳答案

使用这个库:https://github.com/frankiesardo/icepick

从 WebView 中移除保护

@State 
WebView myWebView; // This will be automatically saved and restored

在您的 Activity 方法中添加以下行,Rest 将被处理。

在 OnCreate 方法中

@Override public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
Icepick.restoreInstanceState(this, savedInstanceState);
}

在onSaveInstanceState中

@Override public void onSaveInstanceState(Bundle outState) 
{
super.onSaveInstanceState(outState);
Icepick.saveInstanceState(this, outState);
}

关于android - onSaveInstanceState 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com