3

I have read all the topics concerning this, but I have not been able to solve the problem.

I have a webview for each tab, I change the tabs from the navigation bottom menu. I want to block the webview refresh when I change tabs

I tried to use:

    if (webViewBundle != null)
    {
        mWebView.restoreState(webViewBundle);
    }

...

public void onPause() {
    super.onPause();
    webViewBundle = new Bundle();
    mWebView.saveState(webViewBundle);
}

Or

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    super.onActivityCreated(savedInstanceState);

    if (webViewBundle != null)
    {
        mWebView.restoreState(webViewBundle);
    }
}

And

   if (savedInstanceState != null) {
        mWebView.restoreState(savedInstanceState);
    }

...

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    mWebView.saveState(savedInstanceState);
}

Nothing seems to work, every time I change the fragment the webview is reloaded.

This is the simplified MainActivity:

  public class MainActivity extends AppCompatActivity {

    private BottomNavigationView navView;
    private Context context;
    private NavController navController;
    private AppBarConfiguration appBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);


        navView = findViewById(R.id.nav_view);
        appBarConfiguration = new AppBarConfiguration.Builder(R.id.navigation_dashboard, R.id.navigation_search, R.id.navigation_tip,R.id.navigation_notifications, R.id.navigation_profile).build();
        navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
        NavigationUI.setupWithNavController(navView, navController);

    }
}

This is one of the 5 fragments:

public class DashboardFragment extends Fragment {

    private Context context;
    private WebView mWebView;

    @SuppressLint({"JavascriptInterface", "ClickableViewAccessibility"})
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {



        View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
        mWebView = root.findViewById(R.id.home_webview);


        if (savedInstanceState != null) {
            mWebView.restoreState(savedInstanceState);
        }else{
             mWebView.loadUrl(URL);
        }


        return root;


    }

    public void onSaveInstanceState(Bundle outState) {
        mWebView.saveState(outState);
        super.onSaveInstanceState(outState);
    }
}
exper_1
  • 137
  • 8

0 Answers0