没有互联网连接时显示刷新页面按钮

showing refresh page button when there is no internet connection

我有一个 activity 需要互联网连接,我在加载页面时放置了一个进度条,但是当用户没有互联网连接时,进度条总是 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);
    }
}

我想要的是,当没有互联网连接时,进度条的状态为 GONE 并立即 显示按钮 ,这个按钮会刷新activity,请问有解决办法吗?

您必须像这样检查您是否已连接到互联网:

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" />