VIDEO
public class MainActivity extends AppCompatActivity {
String TAG = "MainActivity" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main );
Log.v (TAG , "<<screen>>" );
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentMain fragmentMain = new FragmentMain();
transaction.addToBackStack("fragmentMain" );
transaction.replace(R.id.container , fragmentMain);
transaction.commit();
}
public boolean handleBackStack() {
int count = getFragmentManager().getBackStackEntryCount();
Log.v (TAG , String.valueOf (count));
if (count == 1 ) {
finish();
} else {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
getFragmentManager().popBackStackImmediate();
transaction.commit();
}
return true ;
}
//handle the hardware back press
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
handleBackStack();
return true ;
}
return super .onKeyDown(keyCode, event);
}
}
public class FragmentMain extends Fragment {
public FragmentMain() {
// Required empty public constructor }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main , container, false );
final Button mButtonFragmentMain=(Button)view.findViewById(R.id.button__fragment_main );
Log.v ("<< main fragment>>" ,"<<screen>>" );
mButtonFragmentMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentChild fragmentChild = new FragmentChild();
transaction.addToBackStack("fragmentChild" );
transaction.replace(R.id.container , fragmentChild);
transaction.commit();
}
});
return view;
}
}
public class FragmentChild extends Fragment {
public FragmentChild() {
// Required empty public constructor }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_child , container, false );
return view;
}
}
activity_main
<? xml version= "1.0" encoding= "utf-8" ?>
<FrameLayout
xmlns: android = "http://schemas.android.com/apk/res/android"
android :id= "@+id/container"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
android :orientation= "vertical" >
</FrameLayout >
fragment_main
<RelativeLayout
xmlns: android = "http://schemas.android.com/apk/res/android"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
android :paddingBottom= "@dimen/activity_vertical_margin"
android :paddingLeft= "@dimen/activity_horizontal_margin"
android :paddingRight= "@dimen/activity_horizontal_margin"
android :paddingTop= "@dimen/activity_vertical_margin" >
<TextView
android :layout_width= "wrap_content"
android :layout_height= "wrap_content"
android : layout_centerHorizontal = "true"
android :layout_marginTop= "20dp"
android :text= "Main Fragment Screen"
android :textSize= "26sp"
android :textStyle= "bold" />
<Button
android :id= "@+id/button__fragment_main"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :layout_centerInParent= "true"
android :paddingBottom= "15dp"
android :paddingTop= "15dp"
android :text= "Open Child Fragment"
android :textSize= "20sp" />
</RelativeLayout >
fragment_child
<RelativeLayout
xmlns: android = "http://schemas.android.com/apk/res/android"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
android :paddingBottom= "@dimen/activity_vertical_margin"
android :paddingLeft= "@dimen/activity_horizontal_margin"
android :paddingRight= "@dimen/activity_horizontal_margin"
android :paddingTop= "@dimen/activity_vertical_margin" >
<TextView
android :layout_width= "wrap_content"
android :layout_height= "wrap_content"
android :layout_centerInParent= "true"
android :text= "Child Fragment Screen"
android :textSize= "26sp"
android :textStyle= "bold" />
</RelativeLayout >