我正在学习开发Android应用程序,我正在尝试通过从侧面滑动来添加片段。片段已添加,但只是出现,没有动画。
FragmentOne中有一个按钮,我在MainActivity中附加了一个事件,以便在点击FragmentTwo时。该事件被正确拦截
有人能发现我做错了吗?
MainActivity.java
public class MainActivity extends Activity
{
LinearLayout ll;
FragmentOne f1;
Animation fadeIn;
@Override
protected void onCreate ( Bundle savedInstanceState )
{
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
f1 = new FragmentOne ();
FragmentTransaction ft1 = getFragmentManager ().beginTransaction ();
ft1.add ( R.id.topFl, f1 );
ft1.commit ();
}
@Override
protected void onStart ()
{
super.onStart ();
Button b = f1.getAddFragmentButton ();
b.setOnClickListener
(
new Button.OnClickListener ()
{
public void onClick ( View v )
{
FragmentTransaction ft2 = getFragmentManager ().beginTransaction ();
ft2.setCustomAnimations ( R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left );
ft2.addToBackStack ( null );
ft2.add ( R.id.bottomFl, new FragmentTwo () );
ft2.commit ();
}
}
);
}
}
enter_from_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="1700"/>
</set>
exit_to_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator
android:fromXDelta="0%" android:toXDelta="-100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="1700"/>
</set>
答案 0 :(得分:2)
使用support library fragments而不是使用getFragmentManager()
,请使用getSupportFragmentManager()
。
这可能听起来反直觉,但最好使用支持库组件,因为任何错误(如此)都会更新和修复,而平台组件则与平台版本相关联。