我有一個DialogFragment,它有一些其視圖內的一些佈局的動畫。 當我關閉對話框時,我想執行動畫,當動畫結束時,執行解除操作。佈局的DialogFragment動畫和「試圖在繪圖時破壞窗口!」錯誤
第一步: 呼叫從我的活動片段:
myDialog.show(getSupportFragmentManager(), "");
第2步: 用戶已經完成了與對話的任務後,他按下一個按鈕。該按鈕調用一個動畫之後,我想的對話框消失:
@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);
}
});
.....
當動畫結束時,對話框被撤職,但我得到的logcat
E/ViewRootImpl這個錯誤(25507) :試圖在繪圖時摧毀窗戶! E/ViewRootImpl(25507):[email protected], 標題= com.mypackage/com.mypackage.MyActivity
我怎樣才能避免這種情況?
後來編輯:如果我使用它沒有任何動畫,一切工作正常,沒有錯誤顯示logcat。所以我想它必須對動畫做些什麼。
我使用的動畫:
<?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>
那意味着你的對話框一直沒有消失? –
對話框按正常期望消失。所以一切都表現正常,除了錯誤信息哪個..並不意味着什麼好。 – Alin
這是因爲你必須通過getSupportFragmentManager()作爲一個上下文對象......等等,而不是它,你必須通過getActivity()...... –