Как сделать так, чтобы при потере интернет соединения “кнопка обновить” показывалась всегда?

230
27 апреля 2017, 13:55

Есть приложение, которое воспроизводит онлайн радио.

При сворачивании приложения или при отключении интернета выходит внизу сообщение "Нет интернет соединения!" и кнопка "RETRY". Спустя пару секунд это сообщение с кнопкой пропадает и не появляется., и соответственно окно со списком станций не обновляется. Как сделать так, чтобы это окно с кнопкой RETRY висело всегда, или до тех пор, пока интернет не появится и обновило мне активити автоматически. Подскажите пожалуйста, где и что заменить в коде?? Я еще не совсем разбираюсь в этом...

P.S: Если важно, то список со станциями находится не в приложении, а грузится с сервера с помощью json файла.

@Override
public void onResume() {
    // TODO Auto-generated method stub
    if (connDetector.checkInternetConnection()) {
    }else {
        showCustomToast("Нет интернет соединения!");
        return;
    }
    super.onResume();
}

и

@Override
public void onClick(View v) {
    pos =getPosition();
    Log.d(TAG, "onClick " + getPosition());
    if (connDetector.checkInternetConnection()) {
        String trackId = null;
        String trackTitle = null;
        String trackImageUrl = null;
        if (mArrTrackList != null) {
            rl_musiccontorl.setVisibility(View.VISIBLE);
            card_view_musiccontorl.setVisibility(View.VISIBLE);
            trackId = mArrTrackList.get(pos).getId();
            trackTitle = mArrTrackList.get(pos).getTitle();
            trackImageUrl = mArrTrackList.get(pos).getArtwork_url();
            sharedPref.saveTrackId(trackId);
            sharedPref.saveTrackTitle(trackTitle);
            sharedPref.saveTrackImageUrl(trackImageUrl);
            HomeActivity.musicSrv.setSongDetails(mArrTrackList, pos);
            HomeActivity.musicSrv.playSong();
        }
        resetplayer();
    } else {
        showCustomToast(getResources().getString("Нет интернет соединения!);
        finish();
    }
}

и

   private void setNoNetwork() {
    // TODO Auto-generated method stub
    card_view_network.setVisibility(View.VISIBLE);
    textView_title.setVisibility(View.GONE);
    listView_Category.setVisibility(View.GONE);
    card_view_musiccontorl.setVisibility(View.GONE);
    Snackbar.make(parentPanel, getString(R.string.network_error), Snackbar.LENGTH_INDEFINITE)
            .setAction("RETRY", new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getRequest();
                }
            }).show();
}

Answer 1

Как сделать так, чтобы это окно с кнопкой RETRY висело всегда

Это Ваше «окно» представляет из себя не что иное, как SnackBar. Для того, чтобы SnackBar не скрывался автоматически, при его создании третьем параметром необходимо передать константу Snackbar.LENGTH_INDEFINITE:

Snackbar snackBar = Snackbar.make(view, "My awesome snackbar", Snackbar.LENGTH_INDEFINITE).

Для того, чтобы скрыть SnackBar, достаточно вызвать метод dismiss():

snackBar.dismiss();

PS. Название метода у Вас плохое, говорите showCustomToast(...), а показываете SnackBar.

READ ALSO
есть ли максимальный размер у массивов в java?

есть ли максимальный размер у массивов в java?

Есть массив byte[]Чем ограничивается его максимальный размер? Влияет ли на это размер стека Xss для JVM?

239
Как в данном случае лучше использовать replaceAll?

Как в данном случае лучше использовать replaceAll?

как сделать replace all, что бы осталось [{gvdfdf}, {vxcbnn}]

217
Удаление гиперссылок в WebView(Android)

Удаление гиперссылок в WebView(Android)

Нужно удалить(сделать неактивными) ссылки в WebView на AndroidСтраницу WebView получаем через:

191
java smack 4.2.0 для подключения к XMPP по SSL

java smack 4.2.0 для подключения к XMPP по SSL

Необходимо написать небольшого бота для для джаббераДля работы лучше всего использовать библиотеку smack 4

206