WebView в пустой вкладке, когда вернуться - PullRequest
0 голосов
/ 18 октября 2018

Ну, у меня есть веб-просмотр на вкладке, когда я показываю часть информации.Проблема заключается в том, что когда я изменяю фрагмент (я использую это) и возвращаюсь, веб-представление становится пустым (черным).

Я использую метод loadDataWithBaseURL, и я пытался заполнить historyUrl param, но я получаю те же результаты.

Вот фрагмент моего кода:

String html ="<html><head>" +
            "<style type=\"text/css\">"+
            "@font-face { font-family: '"+ AppData.getFont(context)+"'; src: url('"+AppData.getFont(context)+"'); }"+
            "* {font-family: '"+AppData.getFont(context)+"'; font-size: "+font+" !important; font-weight:normal !important;}"+
            "h1 {font-size: "+h1+" !important;}"+
            "strong, b {font-family: '"+AppData.getFont(context)+"'; font-weight: bold !important;}"+
            "</style>"+
            "</head><body>",
            ending="</body></html>";

    Log.e("HTML", html);
    String filename = "file:///android_asset/";

    String myHtmlString = html + product.getCurrentDescription(context) + ending;
    tvDescription.loadDataWithBaseURL(filename, myHtmlString, "text/html; charset=utf-8", "utf-8", filename);

Этот метод используется для управления вкладками:

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TextView tvTabDescription = (TextView) inflater.inflate(R.layout.custom_tab_text,null);
    TextView tvTabCondition = (TextView) inflater.inflate(R.layout.custom_tab_text,null);
    TextView tvTabLocation = (TextView) inflater.inflate(R.layout.custom_tab_text,null);

    //Creating custom tabs
    tvTabDescription.setText(context.getResources().getString(R.string.tab_description));
    tabLayout.addTab(tabLayout.newTab().setCustomView(tvTabDescription));

    tvTabCondition.setText(context.getResources().getString(R.string.tab_conditions));
    tabLayout.addTab(tabLayout.newTab().setCustomView(tvTabCondition));

    tvTabLocation.setText(context.getResources().getString(R.string.tab_location));
    tabLayout.addTab(tabLayout.newTab().setCustomView(tvTabLocation));

    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    final PagerAdapter pagerAdapter = new com.iurban.iurbanapp.Adapters.PagerAdapter(getFragmentManager(),tabLayout.getTabCount(), product, context);
    viewPager.setAdapter(pagerAdapter);
    viewPager.setOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
            if(tab.getPosition() == 2)
                ivProduct.setVisibility(View.GONE);
            else
                ivProduct.setVisibility(View.VISIBLE);
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

Я собираюсь поделиться этими двумя картинками, первая находится в первой, прибывают в эту часть, а вторая - после нажатия на кнопку «Резервировать» и возвращаюсь.

enter image description here

enter image description here

Когда я нажимаю кнопку «Резервировать», загружается фрагмент FormFragment:

formFragment = new FormFragment();
    fragmentManager.beginTransaction()
            .replace(R.id.fm_container, formFragment)
            .addToBackStack(CustomConstants.FORM).commit();

и при возврате выполняется метод onBackPressed () android, который вызывает super.onBackPressed ();

OnCreate моего FormFragment выглядит как следующий фрагмент кода, оба метода только "инициализируют компоненты (получая представления из xml)"и" инициализация методов на клике для этих компонентов ":

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_form, container, false);
    initComponent(rootView);
    initOnClicks();
    return rootView;
}

Спасибо заранеее.

1 Ответ

0 голосов
/ 19 октября 2018

Я не уверен, правильно ли я понял вашу проблему, но вы можете сохранить состояние вашего WebView и восстановить его, когда пользователь вернется к нему.

Вот пример кода.Вы должны поместить этот фрагмент кода в Fragment, который вы используете WebView.

@Override
protected void onSaveInstanceState(Bundle outState) {
    webView.saveState(outState);
    super.onSaveInstanceState(outState);
}

, а в методе onCreateView или onViewCreated вашего фрагмента восстановить его следующим образом:

if (savedInstanceState != null){
   webview.restoreState(savedInstanceState);
}
else{
   webview.loadUrl(url)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...