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

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.