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