0

Ich versuche, eine Anwendung zu erstellen, die zwei Seiten hat. Die erste Seite ist eine Registerseite und die zweite Seite ist eine Detailseite.Android - Rufen Sie ein Fragment innerhalb der Registerkarte

Ich erstelle eine angezapfte Seite mit this guide. Ich habe eine Hauptaktivität, die View Pager und 3 Registerkarten enthält (Tab1, Tab2, Tab3). Tab3 enthält eine Schaltfläche zum Navigieren auf der Detailseite. Jede Registerkarte hat eigene .java (erweitert Fragment) und .xml-Datei. Ich bearbeiten fragmentThree.xml Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/fragmentThree"]> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/goToDetail" 
    android:text="GO TO DETAIL" /> 

ich ein neues Fragment für Detailseite erstellen. Ich setze onclick Methode innerhalb von Tab3.java;

goToDetail.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 

      FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
      FragmentTransaction transaction = fragmentManager.beginTransaction(); 
      transaction.replace(R.id.mainActivity, new Detail()); 
      transaction.commit(); 
     } 
    }); 

Wenn ich den Knopf drücke, tut es nichts. Ich ersetze das Fragment nicht.

+0

auf Klick auf den Button, haben Sie neue Registerkarte (ein neues Fragment in Ihrem Fall) oder navigieren Sie zu einer neuen Aktivität erstellen möchten Details zeigen? –

+0

Navigieren Sie zu einer neuen Aktivität, um Details anzuzeigen. –

+0

Bitte geben Sie alle Informationen an, um Ihnen zu helfen, verwenden Sie Support-Fragmente? Wenn ja, sollten Sie stattdessen getSupportFragmentManager verwenden. – miibpa

Antwort

0

Verwendung Frame-Layout in Hauptaktivität

<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/parent"> 

In clicklistiner: -

FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
      FragmentTransaction transaction = fragmentManager.beginTransaction(); 
      transaction.replace(R.id.parent, new Detail()); 
      transaction.commit(); 
0

Verwenden viewpager Sie id statt Haupt-Layout-ID, in dem Sie auf die Registerkarte Layout Fragment gesetzt.

transaction.replace(R.id.viewpager, new Detail()); 
Verwandte Themen