方向改变后的Android片段顺序

时间:2015-02-26 22:31:23

标签: android fragment

我有一个包含许多片段的活动。 如果我从片段A(背景,B前景)调用片段B然后更改我的设备的方向,则片段以不同的顺序显示:A在前景中,B在背景中。 如果我按回去,片段B被分离,所以我假设进入后台的位置很好。 我怎么能以正确的顺序恢复片段? 我不能使用android:configChanges =“orientation | screenSize”

由于

1 个答案:

答案 0 :(得分:0)

通过你的帖子,我发现我遇到了与你一样的问题。

当配置发生变化时,片段会重新加载,因此当方向发生变化时。因此,您需要实现视图。 我用帖子找到了解决方案。Change fragment layout on orientation change

这是适合我的解决方案。希望它会对你有所帮助。

public class YourFragmentActivity extends Fragment {

    private FrameLayout frameLayout;

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

        frameLayout = new FrameLayout(getActivity());
        LayoutInflater inflater2 = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        frameLayout.addView(ReloadView(inflater2));
        return frameLayout;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        frameLayout. removeAllViews();
        LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        frameLayout .addView(ReloadView(inflater));
    }

    private View ReloadView(LayoutInflater inflater) {
        View v = inflater.inflate(R.layout.your_layout, null);
        //do your staff, button, listener, etc
        return v;
    }

}

并且不要忘记在你的清单中添加它,否则它将无效。

<activity android:name="com.example.YourFragmentActivity"
        android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden"
        android:configChanges="orientation|screenSize"/>