android根据互联网连接更改视图

Posted

技术标签:

【中文标题】android根据互联网连接更改视图【英文标题】:android change view based on internet connection 【发布时间】:2016-04-07 16:31:46 【问题描述】:

我知道如何检查互联网连接,在许多活动和片段中,您会将布局更改为表示没有互联网连接的静态视图。 我想让我的代码更有活力。 问题是:如何根据互联网连接更改您的contentView? 我可以考虑检查每个Activity 上的互联网是否可用,如果不是,只需更改视图并覆盖onClickListener,但我不想重复自己。

【问题讨论】:

Broadcast receiver for checking network connectivity @nobalG 不完全是我的答案。 您可以使用 BaseActivity 来处理连接状态更改。并从这个基类扩展每一个活动。 【参考方案1】:

编写类似这样的代码,

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

/**
 * @author Krish
 */
public abstract class BaseActivity extends FragmentActivity 

    protected abstract int getLayoutId();

    private LinearLayout connectivtyStateView;
    private ViewGroup content;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        FrameLayout conainer = new FrameLayout(this);
        conainer.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        this.connectivtyStateView = new LinearLayout(this);
        this.connectivtyStateView.setBackgroundResource(R.color.abc);
        this.connectivtyStateView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        conainer.addView(connectivtyStateView);
        this.content = (ViewGroup) LayoutInflater.from(this).inflate(getLayoutId(), conainer, true);
        setContentView(conainer);
    

    @Override
    protected void onResume() 
        super.onResume();
        //registerReceiver()
    


    @Override
    protected void onPause() 
        super.onPause();
        // unregisterReceiver();
    


    /** Callback for connection change */
    private void handleConnectivityChange(boolean isConnected) 
        if (isConnected) 
            connectivtyStateView.setVisibility(View.GONE);
            content.setVisibility(View.VISIBLE);
         else 
            connectivtyStateView.setVisibility(View.VISIBLE);
            content.setVisibility(View.GONE);
        
    


并为您的活动扩展此类,并为您的内容布局实现返回布局资源 ID 的抽象方法。

【讨论】:

以上是关于android根据互联网连接更改视图的主要内容,如果未能解决你的问题,请参考以下文章

根据用户离线或在线连接更改链接href

iOS13 立即检查互联网连接

如何每隔N秒检查一次android中的Internet连接

适用于 Android 的 Firebase 推送通知

当互联网连接或断开时得到通知

Android Studio模拟器没有互联网[重复]