OverridePendingTransition во фрагменте

В моем основном действии используется tablayout с помощью viewpager и FragmentStatePagerAdapter. Я хочу открыть новое действие с помощью настраиваемой анимации из одного из моих фрагментов и снова закрыть его с помощью анимации. Когда я его открываю, единственное, что я вижу, это черный экран. Вот как я это делаю:

public class SearchActivity extends Fragment{
    ...
    Intent myIntent = new Intent(getContext(), DetailsActivity.class);
    startActivityForResult(myIntent, ACTIVITY_RESULT);
    getActivity().overridePendingTransition(R.anim.animation_enter,
                           R.anim.animation_leave);
    ...
}


public class DetailsActivity extends AppCompatActivity{
    ...
    Intent returnIntent = new Intent();
    returnIntent.putExtra("result", updatesPerformed);
    setResult(Activity.RESULT_OK, returnIntent);
    finish();
    overridePendingTransition(R.anim.animation_leave,
                           R.anim.animation_enter);
    ...
}

Я попытался переместить метод в разных местах, но анимация все еще не работает, и я вижу только черный экран. Если я приостанавливаюсь и возвращаюсь к тому же самому действию, я это вижу.

Ответ 1

Проверьте решение CodingInFlow: Слайд-анимация между действиями

slide_in_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="-100%p"
    android:toXDelta="0" />

slide_out_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="0"
    android:toXDelta="-100%p" />
</set>

MainActivity.java

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void openActivity2(View view) {
        Intent intent = new Intent(this, Activity2.class);
        startActivity(intent);
        overridePendingTransition(R.anim.slide_in_right, 
        R.anim.slide_out_left);
    }
}

activity_2.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="This is Activity 2"
    android:textSize="30sp" />

</LinearLayout>

Activity2.java

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
    }

    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.slide_in_left,
            R.anim.slide_out_right);
    }
}