Ich möchte RelativeLayout namens "content" in einer Aktivität anzeigen, wenn eine Internetverbindung besteht, und sie durch ein anderes Layout namens "noInternet" ersetzen, wenn keine Verbindung besteht. Die gleiche Logik sollte beim Öffnen der App implementiert werden.Layout nicht ungültig bei Netzwerkstatusänderung
Ich folgte this, this und this ich einen Netzwerk-Receiver wie folgt erstellt:
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;
}
}
In meinem Manifest, habe ich dies unter Anwendung tag:
<receiver android:name="com.myPackage.ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
und unter dem Manifest-Tag :
<uses-permission android:name="android.permission.INTERNET" />
Ich habe meine Tätigkeit Layout wie folgt aus:
<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>
die Layouts wechseln ich diesen Code in der onCreate() -Methode der Aktivität schrieb:
if(ConnectionChangeReceiver.hasConnectivity()){
noInternet.setVisibility(View.GONE);
content.setVisibility(View.VISIBLE);
} else {
content.setVisibility(View.GONE);
noInternet.setVisibility(View.VISIBLE);
}
Das Problem ist, dass die Layouts sollen um bei wechselnden Internetkonnektivität zu wechseln, aber sie nicht. Ich habe versucht, invalidate() [siehe this] und Handler [siehe this], aber nichts scheint zu funktionieren.
Wo bin ich falsch gelaufen?