我刚刚发现每次在Fragment上设置setRetainInstance(true)时它都按预期工作(片段数据被保留),但这会导致片段的自定义动画在屏幕旋转后再次执行.
有没有办法在屏幕旋转时避免/禁用这些动画?
使用以下动画创建片段:
setCustomAnimations(R.anim.slide_in_right,R.anim.slide_out_left,R.anim.slide_in_left,R.anim.slide_out_right);
所以,我不希望在屏幕旋转时再次执行那些"滑动动画".
我正在尝试用活动做一些事情,但是在一个片段中.我所做的是使用活动:
首先停止旋转设备时重新启动活动
android:configChanges="keyboardHidden|orientation|screenSize"
在我的活动中添加:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)
因此,获取活动不会重新启动,而是重新加载main.xml,以使用layout-land
现在我有一个显示viewpager的活动,其中包含三个片段.一切正常.旋转的检测在碎片中
public class FRG_map_web extends Fragment {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i("myLogs", "Rotation");
}
Run Code Online (Sandbox Code Playgroud)
问题是片段不使用setContentView(R.layout.main); 这是代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.frg.myFragment, null);
Run Code Online (Sandbox Code Playgroud)
我试着用:
LayoutInflater inflater = inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.frg.myFragment, null);
...
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.frg.myFragment, null);
...
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
view = inflater.inflate(R.layout.frg.myFragment, …Run Code Online (Sandbox Code Playgroud)