Fragment Changes when Screen is rotated

烈酒焚心 提交于 2020-02-06 02:38:38

问题


I have two fragments, FragmentCity and Fragmentnumber1. When screen orientation changes on fragmentnumber1, it goes back to FragmentCity. Does anyone know how to solve this? I appreciate it if you could show me how to solve this issue

FragmentCity

public class FragmentCity extends Fragment {

    final String[] items = new String[]{"FC1", "FC2", "FC3", "FC4","FC5"
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.haz, container, false);

        ListView list = (ListView) view.findViewById(R.id.fir);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {

                Fragment myFragment = null;

                switch (arg2) {

                    case 0:
                        myFragment = new Fragmentnumber1();
                        break;
                    case 1:
                        myFragment = new Fragmentnumber2();
                        break;
                    case 2:

                        myFragment = new Fragmentnumber3();
                        break;
                    case 3:
                        myFragment = new Fragmentnumber4();
                        break;
                    case 4:
                        myFragment = new Fragmentnumber5();

                        break;

                }
                // update the main content by replacing fragments

                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
                fragmentManager.beginTransaction().addToBackStack("frag")
                        .replace(R.id.container2, myFragment)
                        .commit();


            }

        });
        return view;
    }



}

Fragmentnumber1

public class Fragmentnumber1 extends Fragment {

    final String[] items = new String[]{"num1", "num2", "num3"
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.haz, container, false);

        ListView list = (ListView) view.findViewById(R.id.fir);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {

                Fragment myFragment = null;
                switch (arg2){
                    case 0:
                        myFragment = new num1();
                        break;
                    case 1:
                        myFragment = new num2();
                        break;
                    case 2:
                        myFragment = new num3();
                        break;

                }
                // update the main content by replacing fragments
                FragmentManager fragmentManager = getChildFragmentManager();
                fragmentManager.beginTransaction().addToBackStack(null)
                        .replace(R.id.container2, myFragment)
                        .commit();
            }

        });
        return view;
    }




}

回答1:


Try adding the following line to your containing activity (probably MainActivity) in the manifest

<activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>

This will allow the Activity to maintain it's state across orientation changes.




回答2:


You have not posted code of activity class but i am guessing that you have loaded FragmentCity fragment in onCreate of your activity

So when you change orientation it again call onCreate and load FragmentCity fragment so by putting proper condition you can manage it.



来源:https://stackoverflow.com/questions/32503305/fragment-changes-when-screen-is-rotated

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!