I have an SchoolActivity that has two buttons: -Primary (adds the PrimaryFragment) -Secondary (adds the SecondaryFragment)
<?xml version="1.0" encoding="utf-8"?>
<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="vertical"
    tools:context="com.yuv.mycollege.MainActivity">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <Button
        android:id="@+id/button_primary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Primary"/>
    <Button
        android:id="@+id/button_secondary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Secondary"/>
    </LinearLayout>
    <!-- Main content area for fragments-->
    <FrameLayout
        android:background="@color/colorPrimary"
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:padding="4dp"/>
</LinearLayout>
Both the fragments has content and footer area, which are themselves are fragments (PrimaryContentFragment, PrimaryFooterFragment, SecondaryContentFragment, SecondaryFooterFragment)
I am adding the fragments from the activity using:
public void onClick(View view) {
    Button button = (Button)view;
    Toast.makeText(this, "Going to Add Children", Toast.LENGTH_SHORT).show();
    switch(view.getId()) {
        case R.id.button_primary:
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.main_container, new PrimaryFragment())
                    .addToBackStack("primary")
                    .commit();
            break;
        case R.id.button_secondary:
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.main_container, new SecondaryFragment())
                    .addToBackStack("secondary")
                    .commit();
            break;
    }
}
And, finally adding the each children fragments using: The layout file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/content_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/colorAccent"
        android:layout_weight="8"
        ></FrameLayout>
    <FrameLayout
        android:id="@+id/footer_container"
        android:background="@color/colorPrimaryDark"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        ></FrameLayout>
</LinearLayout>
The children fragments adding:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.primary_fragment, container, false);
        getChildFragmentManager()
                .beginTransaction()
                .add(R.id.content_container, new PrimaryContentFragment())
                .add(R.id.footer_container, new PrimaryFooterFragment())
                .addToBackStack("primarychildren")
                .commit();
        return view;
    }
I am adding the similar logics for the another fragment also and so on for the rest which is working.
THE PROBLEM: The solution as stated is working but seems as very raw naive approach. Could anybody suggest the better architecture I could follow such as:
- all the fragments (Primary/Secondary/...) uses the same designs so can I create some base class to inherit common features
- all the footer are similar for all of fragments but with simple text change (might be like breadcrumb) So, Can I use same footer for all fragments with some settext method ...
- how can I effectively communicate between activity and fragments
BEING A NEW ANDROID DEV, MY ONLY CONCERN IS AM I DOING THE RIGHT WAY !!!
 
     
    