在销毁父片段

时间:2015-12-30 17:56:14

标签: android android-fragments

以下是我的片段布局

     <LinearLayout

        <EditText
            .../>

        <com.example.android.view.ReshareButton
            .../>

    </LinearLayout>

我在按钮代码中有一个动画,当我点击按钮时会显示✓。

    public void setCurrentState(int state) {
    if (state == currentState) {
        return;
    }

    currentState = state;
    if (state == STATE_DONE) {
        setEnabled(false);
        postDelayed(revertStateRunnable, RESET_STATE_DELAY_MILLIS);
        setInAnimation(getContext(), R.anim.slide_in_done);
        setOutAnimation(getContext(), R.anim.slide_out_send);

    } else if (state == STATE_SEND) {
        setEnabled(true);
        setInAnimation(getContext(), R.anim.slide_in_send);
        setOutAnimation(getContext(), R.anim.slide_out_done);
    }
    showNext();
}

在我的片段onSendClickListener()

public void onSendClickListener(View v) {

     btnResharePhoto.setCurrentState(ReshareButton.STATE_DONE);

     hideKeyboard(getActivity(),etCaption);
     this.getFragmentManager().beginTransaction().remove(this)
             .commit();
}

问题:当前片段会立即被突然销毁,而不会等待按钮动画完成。

编写完文本后,我们需要以下行为,然后点击“发送”按钮:

  1. 键盘关闭。
  2. 按钮动画更改为✓
  3. 当前片段被销毁并返回上一片段(顺利)。
  4. 目前,如果我删除了remove(this).commit();我得到了上述行为,但后来我需要按回去回到之前的片段。按下按钮后该怎么做?

1 个答案:

答案 0 :(得分:1)

放代码
处理程序的运行回调如下:

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            getFragmentManager().beginTransaction().remove(this)
         .commit();
        }
    }, RESET_STATE_DELAY_MILLIS);