Mam DialogFragment, który ma animacje niektórych układów wewnątrz jego widoku. Po zamknięciu okna dialogowego chcę wykonać animację i po zakończeniu animacji wykonać operację zamknięcia.Animacja DialogFragment układu i "Próba zniszczenia okna podczas rysowania!" error
Krok 1: połączeń fragment z mojej działalności:
myDialog.show(getSupportFragmentManager(), "");
Krok 2: Gdy użytkownik zakończył pracę z okna, naciska guzik. Że przycisk wywołuje animację, a potem chcę dialogowe zniknie:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.my_layout, null);
layMain = (LinearLayout) layout.findViewById(R.id.layMain);
TextView btnCancel = (TextView) layout.findViewById(R.id.btnCancel);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.translate_to_bottom);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
dismiss();
}
});
layMain.startAnimation(anim);
}
});
.....
Kiedy końce animacje, okno zostaje odwołany, ale pojawia się ten błąd na LogCat
E/ViewRootImpl (25507) : Próba zniszczenia okna podczas rysowania! E/ViewRootImpl (25507): [email protected], title = com.mypackage/com.mypackage.MyActivity
Jak można temu zapobiec?
Późniejsza edycja: jeśli używam go bez animacji, wszystko działa poprawnie i na logcat nie wyświetla się żaden błąd. Więc przypuszczam, że musi coś zrobić z animacją.
Animacja Używam:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="80%p" />
</set>
co oznacza, że twoje okno dialogowe nie zniknęło? –
Okno dialogowe znika jako normalne oczekiwanie.Więc wszystko zachowuje się normalnie, z wyjątkiem tego komunikatu o błędzie, który ... nie może oznaczać czegoś dobrego. – Alin
To dlatego, że przekazałeś getSupportFragmentManager() jako obiekt kontekstu ... więc zamiast tego masz pass getActivity() .... –