setUserVisibleHint вызывается дважды - PullRequest
0 голосов
/ 19 мая 2018

Этот фрагмент кода вызывается дважды, когда фрагмент виден пользователю, вызывая двойной запрос к бэкэнд-серверу, не знаю почему.Я бы предпочел использовать в качестве обходного пути счетчик, останавливая процесс во второй раз. Кто-нибудь знает, как запустить его один раз за раз при навигации?

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        //super.setUserVisibleHint(isVisibleToUser);


        if(isVisible()){

            //Toast.makeText(getContext(), ((ActivityLogin) getActivity()).choiceButton, Toast.LENGTH_LONG).show();

            counter++;
            //if(counter > 1 ) return;


            String ex = extractUni(getContext());

            //CERCA I DATI
            SharedPreferences preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
            String username = preferences.getString("username", "");
            String password = preferences.getString("password", "");

            // PRENDI I DATI
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("username", username));
            nameValuePairs.add(new BasicNameValuePair("password", password));


            String ch = ((ActivityLogin) getActivity()).choiceButton;

            if (ch.equals("login")) {

                //LOGIN
                try {
                    Toast.makeText(getContext(), "counter"+counter, Toast.LENGTH_LONG).show();
                    URL address = new URL("https://api.xxx.it/" + ex + "/login/");
                    Toast.makeText(getContext(), address+" >> login",+Toast.LENGTH_SHORT).show();
                    URLDataReader pp = new URLDataReader(getContext(), this, nameValuePairs);
                    pp.execute(address);


                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }

            } else {
              Toast.makeText(getContext(), "counter"+counter, Toast.LENGTH_LONG).show();
                try {

                    URL address = new URL("https://api.xxx.it/" + ex + "/ping/");
                    Toast.makeText(getContext(), address+" >> ping",+Toast.LENGTH_SHORT).show();
                    URLDataReader pp = new URLDataReader(getContext(), this, nameValuePairs);
                    pp.execute(address);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }

            }

        }
    }

1 Ответ

0 голосов
/ 19 мая 2018

Просто меняется isVisible() на isVisibleToUser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...