I tried in several platforms, but couldn't get an answer.

Please note, the App below uses Googles SlidingTabLayout 
<https://www.google.com.au/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjCsfjZ7Z_RAhWCKJQKHUznC9kQFggZMAA&url=https%3A%2F%2Fdeveloper.android.com%2Fsamples%2FSlidingTabsBasic%2Fsrc%2Fcom.example.android.common%2Fview%2FSlidingTabLayout.html&usg=AFQjCNE2Ra2Qi2iZSYuL7so1Vb871F-4UQ&sig2=tFX-AQgNaVLM3Inyj6-Mzg&bvm=bv.142059868,d.dGo>
.

Fragment1 is a simple fragment with one textview. Fragment2 contains a 
viewpager where I load a separate fragment "FragmentViewPager" via 
FragmentStatePagerAdapter.


In the below example, at any point I click Button1, the `FrameLayout` 
(defined in the MainActivity Layout) should replace `Fragment2` (if exists) 
with `Fragment1`. Therefore, FragmentViewPager should also be destroyed 
along with `Fragment2`. However that does not happen, as when I change the 
orientation of my device (after clicking Button1), I still get the Toast 
which is defined in the `onCreate()` method of `FragmentViewPager`.

Why `FragmentViewPager`'s onCreate method is called even if `Fragment2` is 
paused/destroyed? Is it possible that, the Toast of `FragmentViewPager` 
will not be shown when `Fragment2` is destroyed?


*MainActivity*

    package com.abdfahim.testproject;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button button1 = (Button) findViewById(R.id.button1);
            button1.setOnClickListener(onClickListener);
    
            Button button2 = (Button) findViewById(R.id.button2);
            button2.setOnClickListener(onClickListener);
        }
    
    
        private View.OnClickListener onClickListener = new View.
OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fragment;
                switch (v.getId()){
                    case R.id.button1:
                        fragment = new Fragment1();
                        break;
                    case R.id.button2:
                        fragment = new Fragment2();
                        break;
                    default:
                        return;
                }
                getFragmentManager().beginTransaction().replace(R.id.
frame_container, fragment, v.getTag().toString()).addToBackStack(null).
commit();
            }
        };
    }


*Fragment1*

    package com.abdfahim.testproject;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class Fragment1 extends Fragment {
    
        public Fragment1(){}
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup 
container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment1,container,
false);
            setHasOptionsMenu(true);
    
            return rootView;
        }
    }


*Fragment2*

    package com.abdfahim.testproject;
    
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.os.Bundle;
    import android.support.v13.app.FragmentStatePagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class Fragment2 extends Fragment {
    
        public Fragment2(){}
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup 
container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment2,container,
false);
            setHasOptionsMenu(true);
    
            CharSequence titles[]= {"Tab A", "Tab B"};
    
            // Creating The ViewPagerAdapter
            ViewPagerAdapter adapter =  new ViewPagerAdapter(getActivity().
getFragmentManager(), titles, titles.length);
            ViewPager pager = (ViewPager) rootView.findViewById(R.id.pager);
            pager.setAdapter(adapter);
    
            // Assigning the Sliding Tab Layout View
            SlidingTabLayout tabs = (SlidingTabLayout) rootView.findViewById
(R.id.tabs);
    
            // Setting the ViewPager For the SlidingTabsLayout
            tabs.setViewPager(pager);
    
            return rootView;
        }
    
        static class ViewPagerAdapter extends FragmentStatePagerAdapter {
    
            private CharSequence titles[];
            private int numbOfTabs;
    
            public ViewPagerAdapter(FragmentManager fm, CharSequence mTitles
[], int mNumbOfTabs) {
                super(fm);
    
                this.titles = mTitles;
                this.numbOfTabs = mNumbOfTabs;
    
            }
    
            @Override
            public int getItemPosition(Object object) {
                return POSITION_NONE;
            }
    
            @Override
            public Fragment getItem(int position) {
                Bundle bundle = new Bundle();
                bundle.putString("displayText", "Inside Fragment 2, " + 
titles[position]);
                FragmentViewPager fragment = new FragmentViewPager();
                fragment.setArguments(bundle);
                return fragment;
            }
    
            // This method return the titles for the Tabs in the Tab Strip
    
            @Override
            public CharSequence getPageTitle(int position) {
                return titles[position];
            }
    
            // This method return the Number of tabs for the tabs Strip
    
            @Override
            public int getCount() {
                return numbOfTabs;
            }
    
        }
    }


*FragmentViewPager*

    package com.abdfahim.testproject;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class FragmentViewPager extends Fragment {
    
        public FragmentViewPager(){}
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup 
container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_view_pager,
container,false);
            setHasOptionsMenu(true);
    
            Bundle bundle = this.getArguments();
            TextView textView = (TextView) rootView.findViewById(R.id.
tabText);
            textView.setText(bundle.getString("displayText"));
    
            return rootView;
        }
    
        @Override
        public void onStart() {
            super.onStart();
            Toast.makeText(getActivity(), "This is View Pager Fragment", 
Toast.LENGTH_SHORT).show();
        }
    }

-- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-developers/c5c1fc78-42b9-4c99-8f6b-bab9c517218d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to