2016-04-13 5 views
0

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?

Antwort

0

Nach fast einem Tag mit ihm zu kämpfen, ist hier, was mein Problem behoben:

ich den Code unten in meiner Aktivität hinzugefügt:

@Override 
public void onBackPressed(){ 
    finish(); 
} 
Verwandte Themen