当屏幕旋转片段变动 [英] Fragment Changes when Screen is rotated

查看:151
本文介绍了当屏幕旋转片段变动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个片段,FragmentCity和Fragmentnumber1。当屏幕方向上fragmentnumber1变化,它可以追溯到FragmentCity。有谁知道如何解决此问题?我AP preciate它,如果你能告诉我怎么解决这个问题。

FragmentCity

 公共类FragmentCity扩展片段{    最终的String []项目=新的String [] {FC1,FC2,FC3,FC4,FC5
    };    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                             捆绑savedInstanceState){        查看查看= inflater.inflate(R.layout.haz,集装箱,FALSE);        ListView控件列表=(ListView控件)view.findViewById(R.id.fir);
        ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(getActivity(),android.R.layout.simple_list_item_1,项目);
        list.setAdapter(适配器);        list.setOnItemClickListener(新AdapterView.OnItemClickListener(){            @覆盖
            公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
                                    长ARG3){                片段myFragment = NULL;                开关(ARG2){                    情况下0:
                        myFragment =新Fragmentnumber1();
                        打破;
                    情况1:
                        myFragment =新Fragmentnumber2();
                        打破;
                    案例2:                        myFragment =新Fragmentnumber3();
                        打破;
                    案例3:
                        myFragment =新Fragmentnumber4();
                        打破;
                    情况4:
                        myFragment =新Fragmentnumber5();                        打破;                }
                //更新替换片段的主要内容                FragmentManager fragmentManager = getActivity()getSupportFragmentManager()。
                fragmentManager.popBackStackImmediate(NULL,FragmentManager.POP_BACK_STACK_INCLUSIVE);
                fragmentManager.beginTransaction()。addToBackStack(断枝)
                        .replace(R.id.container2,myFragment)
                        。承诺();
            }        });
        返回视图。
    }}

Fragmentnumber1

 公共类Fragmentnumber1扩展片段{    最终的String []项目=新的String [] {NUM1,NUM2,NUM3
    };    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                             捆绑savedInstanceState){        查看查看= inflater.inflate(R.layout.haz,集装箱,FALSE);        ListView控件列表=(ListView控件)view.findViewById(R.id.fir);
        ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(getActivity(),android.R.layout.simple_list_item_1,项目);
        list.setAdapter(适配器);        list.setOnItemClickListener(新AdapterView.OnItemClickListener(){            @覆盖
            公共无效onItemClick(适配器视图<>为arg0,ARG1观,诠释ARG2,
                                    长ARG3){                片段myFragment = NULL;
                开关(ARG2){
                    情况下0:
                        myFragment =新NUM1();
                        打破;
                    情况1:
                        myFragment =新NUM2();
                        打破;
                    案例2:
                        myFragment =新NUM3();
                        打破;                }
                //更新替换片段的主要内容
                FragmentManager fragmentManager = getChildFragmentManager();
                fragmentManager.beginTransaction()。addToBackStack(空)
                        .replace(R.id.container2,myFragment)
                        。承诺();
            }        });
        返回视图。
    }
}


解决方案

尝试添加下面一行到你的含活性(大概 MainActivity )的清单

<活动机器人:名字=。MainActivity
  机器人:configChanges =keyboardHidden |方向|屏幕尺寸/>

这将使该活动横跨方向改变维护它的状态。

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;
    }




}

解决方案

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.

这篇关于当屏幕旋转片段变动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆