0
我想在互联网连接时在活动中显示名为“content”的RelativeLayout,并在没有连接时将其替换为另一个名为“noInternet”的布局。 应用程序打开时应执行相同的逻辑。布局在网络状态变化时不会失效
我跟着this,this和this 我创建了一个网络接收器是这样的:
public class ConnectionChangeReceiver extends BroadcastReceiver {
static boolean connectivity;
@Override
public void onReceive(Context context, Intent intent)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected())
{
connectivity = true;
}
else {
connectivity = false;
}
}
public static boolean hasConnectivity(){
return connectivity;
}
}
在我的清单,我添加了这个正在申请标签:
<receiver android:name="com.myPackage.ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
和清单标签下:
<uses-permission android:name="android.permission.INTERNET" />
我有我的活动布局是这样的:
<RelativeLayout....>
....
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/noInternet"
android:visibility="gone">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/content">
...
</RelativeLayout>
要切换我在活动的onCreate()方法写了这个代码的布局:
if(ConnectionChangeReceiver.hasConnectivity()){
noInternet.setVisibility(View.GONE);
content.setVisibility(View.VISIBLE);
} else {
content.setVisibility(View.GONE);
noInternet.setVisibility(View.VISIBLE);
}
的问题是,布局都应该打开更改互联网连接,但他们不。 我试着invalidate()[见this]和处理程序[见this],但似乎没有任何工作。
我哪里错了?