I’m new with fragments and I try to use these. My xml from activity is:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Loguin" tools:ignore="MergeRootFrame"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Fragment Test" android:id="@+id/btn_FragmentTest" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:layout_marginBottom="0dp" /> <LinearLayout 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:orientation="horizontal" android:id="@+id/frgContainer" android:layout_marginTop="20dp"> <fragment android:id="@+id/frgLoguin" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="match_parent" android:name="habitatprojects.hubbuildings.Loguin$PlaceholderFragment" tools:layout="@layout/fragment_loguin" /> </LinearLayout> </LinearLayout>
And I want to change the fragment inside of LinearLayout, my class of mainActivity is:
public class Loguin extends Activity { private int num = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_loguin); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } Button btnBoton1 = (Button)findViewById(R.id.btn_FragmentTest); btnBoton1.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if(num==0) { fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment()) .commit(); num++; } else{ if(num==1) { fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment2()) .commit(); num++; } else{ fragmentTransaction.replace(R.id.frgContainer, new PlaceholderFragment3()) .commit(); num = 0; } } } }); }
And my PlaceHolderFunctions are:
public static class PlaceholderFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_loguin, container, false); } } public static class PlaceholderFragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_blank, container, false); } } public static class PlaceholderFragment3 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_blank2, container, false); } }
Why doesn’t work when I press the button? What do I doing bad? Srry for my english and thanks in advance!
PD: If you need more code or info advise me, thanks!
PD1: When I debug with my device the log cat just say me:
11-18 11:33:30.775 6065-6065/habitatprojects.hubbuildings I/ViewRootImpl﹕ ViewRoot’s Touch Event : Touch Down 11-18 11:33:30.835 6065-6065/habitatprojects.hubbuildings I/ViewRootImpl﹕ ViewRoot’s Touch Event : Touch UP
Advertisement
Answer
Solved I just need to change my LinearLayout for FrameLayout! Thanks for all!