0

J'essaye de remplacer un framelayout par le conteneur d'identification par un fragment quand un bouton est cliqué dans une activité. Je pense que le code que j'ai écrit fonctionne mais quelque chose ne va pas peut être son le problème de mise en page.Lorsque l'application s'exécute, le fragment apparaît pour clignotement d'une seconde et il disparaît tout de suite, quelque chose qui bloque. Peut-être que le framelayout a un problème avec viewpager.Veuillez suggérer ce que je fais mal ici.comment remplacer framelayout avec le fragment par programme

Ceci est mon fichier XML.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <include 
      android:id="@+id/toolbar_actionbar" 
      layout="@layout/toolbar_default" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 

     <FrameLayout 
      android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/toolbar_actionbar" 
      android:clickable="true" /> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <TextView 
      android:layout_below="@+id/toolbar_actionbar" 
      android:paddingRight="30dp" 
      android:textColor="#fff" 
      android:layout_width="80dp" 
      android:layout_height="80dp" 
      android:text="Skip" 
      android:textSize="20sp" 
      android:gravity="right" 
      android:id="@+id/txt_skip" 
      android:layout_alignParentRight="true" 
      android:layout_marginTop="20dp" 
      /> 

     <com.viewpagerindicator.CirclePageIndicator 
      android:id="@+id/indicator" 
      android:layout_width="80dp" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:gravity="bottom" 
      app:centered="true" 
      app:fillColor="@color/white" 
      app:pageColor="@color/white" 
      app:snap="false" 
      android:paddingBottom="20dp" 
      android:layout_margin="2dp" 
      /> 


     <com.gc.materialdesign.views.ButtonRectangle 
      android:id="@+id/sign_in_button" 
      android:layout_width="90dp" 
      android:layout_height="60dp" 
      android:background="@color/primary_color" 
      android:text="Sign in" 
      android:paddingBottom="20dp" 
      android:paddingRight="40dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true"/> 


     <com.gc.materialdesign.views.ButtonRectangle 
      android:id="@+id/sign_up_button" 
      android:layout_width="90dp" 
      android:layout_height="60dp" 
      android:background="@color/primary_color" 
      android:text="Sign Up" 
      android:paddingBottom="20dp" 
      android:paddingLeft="40dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true"/> 
    </RelativeLayout> 


    <fragment 
     android:visibility="gone" 
     android:layout_width="280dp" 
     android:layout_height="match_parent" 
     android:id="@+id/fragment_drawer" 
     android:layout_gravity="start" 
     android:background="#ff0000" 
     app:layout="@layout/fragment_navigation_drawer" 
     android:name="com.app.foodmandu.view.nav.NavigationDrawerFragment"/> 

</android.support.v4.widget.DrawerLayout> 

Ceci est la méthode qui déclenche la transaction de fragment à partir d'une activité lorsqu'un clic est effectué sur un bouton.

// inside onClick method. 
openFragment(SignupFragment.newInstance()); 



// This method gets invoked when a button is clicked. 
public void openFragment(Fragment fragment) { 
     FragmentTransaction ft = getSupportFragmentManager() 
       .beginTransaction(); 
     ft.replace(R.id.container, 
       fragment); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.addToBackStack(null); 
     ft.commitAllowingStateLoss(); 
    } 
+0

choses ne sont pas très prometteuses la façon dont la mise en page a eu ses enfants –

+0

@PankajNimgade toute suggestion sur ce que je devrais faire pour que cette chose fonctionne? –

+0

Je crois que vous pourriez rencontrer le conflit entre ViewPager et Framelayout car vous pouvez avoir des fragments pour les deux, vous pourriez penser à quel flux de conception pour l'application –

Répondre

0

Vous devez ajouter le fragment par défaut sur la méthode activité onCreate comme ceci:

getFragmentManager().beginTransaction().add(R.id.container, YOUR FRAGMENT).commit(); 
+0

il m'a donné quelques idées mais n'a pas résolu le problème. –

0

Je pense que votre FrameLayout se cache sous ViewPager et ViewPager chevauche la FrameLayout. Essayez celui-ci:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <include 
     android:id="@+id/toolbar_actionbar" 
     layout="@layout/toolbar_default" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:visibility="gone"/> 



    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:layout_below="@+id/toolbar_actionbar" 
     android:paddingRight="30dp" 
     android:textColor="#fff" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:text="Skip" 
     android:textSize="20sp" 
     android:gravity="right" 
     android:id="@+id/txt_skip" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="20dp" 
     /> 

    <com.viewpagerindicator.CirclePageIndicator 
     android:id="@+id/indicator" 
     android:layout_width="80dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:gravity="bottom" 
     app:centered="true" 
     app:fillColor="@color/white" 
     app:pageColor="@color/white" 
     app:snap="false" 
     android:paddingBottom="20dp" 
     android:layout_margin="2dp" 
     /> 


    <com.gc.materialdesign.views.ButtonRectangle 
     android:id="@+id/sign_in_button" 
     android:layout_width="90dp" 
     android:layout_height="60dp" 
     android:background="@color/primary_color" 
     android:text="Sign in" 
     android:paddingBottom="20dp" 
     android:paddingRight="40dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true"/> 


    <com.gc.materialdesign.views.ButtonRectangle 
     android:id="@+id/sign_up_button" 
     android:layout_width="90dp" 
     android:layout_height="60dp" 
     android:background="@color/primary_color" 
     android:text="Sign Up" 
     android:paddingBottom="20dp" 
     android:paddingLeft="40dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true"/> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/toolbar_actionbar" 
     android:clickable="true" /> 

</RelativeLayout> 


<fragment 
    android:visibility="gone" 
    android:layout_width="280dp" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment_drawer" 
    android:layout_gravity="start" 
    android:background="#ff0000" 
    app:layout="@layout/fragment_navigation_drawer" 
    android:name="com.app.foodmandu.view.nav.NavigationDrawerFragment"/> 

En mettant votre FrameLayout au dernier intérieur RelativeLayout, il apparaîtra au-dessus de tout et se chevauchent tout autre point de vue.

+0

Essayé votre suggestion, mais viewpager bloque le framelayout. –