отображается кнопка refre sh page при отсутствии подключения inte rnet - PullRequest
1 голос
/ 16 июня 2020

У меня есть действие, которое требует подключения inte rnet, и я помещаю индикатор выполнения для загрузки страниц, но когда нет подключения inte rnet от пользователя, индикатор выполнения всегда VISIBLE , как и код ниже

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BlogModel blogModel = new ViewModelProvider(this).get(BlogModel.class);
        blogModel.getBlogList().observe(this,getBlog);
        blogModel.setBlog("extra_blog");


        showLoad(true);
}

private Observer<ArrayList<BlogItem>> getBlog = new Observer<ArrayList<BlogItem>>() {
    @Override
    public void onChanged(ArrayList<BlogItem> blogItems) {
        if (blogItems != null){
            adapter.setData(blogItems);
        }
        showLoad(false);
    }
};

private void showLoad(Boolean state){
    if (state){
        progressBar.setVisibility(View.VISIBLE);
    }
    else {
        progressBar.setVisibility(View.GONE);
    }
}

, и я хочу, чтобы при отсутствии подключения inte rnet индикатор выполнения имел статус GONE и сразу показывая кнопку , и эта кнопка будет работать для refre sh действия , есть ли какое-либо решение, связанное с этим вопросом?

1 Ответ

0 голосов
/ 16 июня 2020

Вы должны проверить, подключены ли вы к inte rnet следующим образом:

boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
    //we are connected to a network
    connected = true;
}
else
    // not connected
    connected = false;

Просто установите Progresssbar Gone, когда вы не подключены. Вам понадобится это разрешение в вашем манифесте:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...