android - onSaveInstanceState 不工作

标签 android android-studio

从其他选项卡返回时最后一个链接没有打开 而且 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/

相关文章:

java - 继承和泛型以及 Dagger2

java - 从服务器搜索 json 数组的搜索栏

android-studio - Cordova 自定义插件使用第3方JAVA lib gradle

java - searchview.onQueryTextListener 之后得到错误的位置 recyclerview

java - 在 Android 上获取当前 GPS 位置

android - 如何禁用 EditText 软件键盘上的 "Next"按钮(替换为 "Done"按钮)

java - onClick() 中的 setVisibility() 使应用程序崩溃

android - AppCompat v7 r21 在 values.xml 中返回错误?

java - 有没有办法让 "folded code"在 Android Studio 中保持折叠状态?

java - 由于四处移动文件,Android Studio 项目搞砸了