Избегайте перезагрузки веб-просмотра, меняя вкладки на android - PullRequest
1 голос
/ 16 марта 2020

Я прочитал все темы, касающиеся этого, но мне не удалось решить проблему.

У меня есть веб-просмотр для каждой вкладки, я меняю вкладки из нижнего меню навигации. Я хочу заблокировать веб-ссылку refre sh при смене вкладок

Я пытался использовать:

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

...

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

Или

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

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

И

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

...

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

Кажется, ничего не работает, каждый раз, когда я меняю фрагмент, веб-просмотр перезагружается.

Это упрощенная функция 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);

    }
}

Это один из 5 фрагментов:

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