Использование одного веб-просмотра для нескольких фрагментов в Android - PullRequest
0 голосов
/ 03 октября 2019

Я создаю приложение для Android с интерфейсом с вкладками. Есть 5 вкладок. Три контролируются нативной активностью, а две другие загружают приложение Angular на маршруте, чтобы показать его содержимое. Например, при нажатии на вкладку «Панель инструментов» приложение Angular загружается на /dashboard.

До сих пор каждая вкладка ссылалась на свою собственную webview. Это создает две проблемы.

  1. Приложение Angular анализируется при каждом нажатии одной из вкладок.
  2. Результатом является веб-просмотр для каждого касания. Т.е. два раза назад и вперед выдает 4 веб-просмотра, что подтверждается при проверке приложения через chrome://inspect.

    public class DashboardFragment extends Fragment {
    
    private DashboardViewModel dashboardViewModel;
    
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        dashboardViewModel =
                ViewModelProviders.of(this).get(DashboardViewModel.class);
        View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
    
        final WebView webView = root.findViewById(R.id.text_dashboard);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setAppCacheEnabled(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setAllowFileAccessFromFileURLs(true);
        webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    
        webView.loadUrl("file:///android_asset/www/index.html#dashboard");
    
        return root;
    }
    }
    

Существует ли способ использования одного веб-просмотра, который сохраняется в обоих случаях? вкладки и без повторного анализа JS каждый раз?

1 Ответ

0 голосов
/ 03 октября 2019

Нет, вы не можете.

Но вы можете сохранить свой DashboardFragment (не пересоздавать вкладку каждый раз, когда она щелкает).

Есть несколько способов сделать это,Например, скрыть / показать фрагмент всякий раз, когда выход / ввод. Или, если вы используете компонент навигации, вы можете как-то сохранить вкладку.

...