Я прочитал все темы, касающиеся этого, но мне не удалось решить проблему.
У меня есть веб-просмотр для каждой вкладки, я меняю вкладки из нижнего меню навигации. Я хочу заблокировать веб-ссылку 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);
}
}