2016-07-24 22 views
0

Ich bin neu in der Android-Entwicklung und einige Probleme mit dem Ersetzen eines Fragments mit einem anderen Fragment.Android: Kann Fragment innerhalb Aktivität mit einem anderen Fragment ersetzen?

In meinem MainFragment.java, das erste, was ich in onCreate tun, ist für Internet-Konnektivität zu überprüfen, und wenn nicht, ich ersetzen dieses Fragment mit der InternetCheckFragment. Jedoch, in InternetCheckFragment.java, wenn ich versuche, meine check_internet.xml aufzublasen, schließt die App, aber es gibt keinen Fehler.

activity_main.xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_browse_fragment" 
    android:name="com.ui.MainFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.ui.MainActivity" 
    tools:deviceIds="tv" 
    tools:ignore="MergeRootFrame" /> 

MainActivity.java:

MainFragment.java:

public class MainFragment extends VerticalGridFragment 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     if (isConnectedToInternet() == true) 
     { 
      // DO stuff 
     } 
     else 
     { 
      showInternetError(); 
     } 
    } 

    public void showInternetError() 
    { 
     getFragmentManager().beginTransaction().replace(R.id.show_internet_error , new InternetCheckFragment()) 
       .commit(); 
    } 

    .... 
} 

InternetCheckFragment.java:

public class InternetCheckFragment extends Fragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
     // Defines the xml file for the fragment 
     return inflater.inflate(R.layout.check_internet, parent, false); 
    } 
} 

check_internet.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/show_internet_error" 
    android:background="@color/black_transparent"> 

    <Button android:id="@+id/btn_retry" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="RETRY" 
     android:layout_centerInParent="true"/> 

</RelativeLayout> 

Allerdings erhalte ich den Fehler No view found for id.

Ich bin mir sicher, dass ich etwas nicht richtig setze? Kann mir jemand in die richtige Richtung zeigen?

Danke!

Antwort

0

Ugh! .. es war ein dummer Fehler, ich ersetzt R.id.show_internet_error innerhalb getFragmentManager().beginTransaction().replace(R.id.show_internet_error , new InternetCheckFragment()).commit(); mit R.id.main_browse_fragment und jetzt funktioniert es mit.

0

Sie blähen ein Fragment in einem Fragment mit dem FragmentManager auf. Dieser FragmentManager kann damit nicht umgehen.

Versuchen Sie, die SupportFragmentManager mit AppCompatActivity.getSupportFragmentManager() und die Unterstützung Fragmente aus android.support.v4.app.Fragment

Verwandte Themen