如何打开第一个dialogFragment,关闭它并打开下一个dialogFragment

时间:2017-02-08 10:14:43

标签: android android-fragments

我不知道在关闭之后如何打开下一个对话框。

它必须如何运作ACTIVITY> FRAGMENT> DIALOG1> DISMISS AND BACK TO ACTIVITY> FRAGMENT> DIALOG2

现在可以像ACTIVITY> FRAGMENT> DIALOG1> DISMISS&BACK TO ACTIVITY> FRAGMENT> DIALOG1

所以当你看到我无法打开secound对话框并先关闭。

片段中的

我创建了这个:

if(isset($_POST['submit'])){

    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    $sourcePath = $_FILES['file']['Tmp_name'];
    if ($sourcePath) {
        $targetPath = "images/" . $_FILES['file']['name'];
       if(move_uploaded_file($sourcePath, $targetPath)) {

           echo 'success';
       } else {

           echo 'fail';
       }

    } else {

        echo 'temp path not define';
    }

}

在dialog1中我有:

 private final String DIALOG_WIN = "DialogWinFragment";
    private final String DIALOG_LOST = "DialogLostFragment";
 int pos;
    private final String POSITION = "position";

@OnClick({R.id.btn_buy ,R.id.btn_sell})
public void onGlobalSearchClicked() {
    SharedPreferences prefs = getContext().getSharedPreferences("app.forex", 0);
    SharedPreferences.Editor editor = prefs.edit();
    FragmentTransaction ft = getChildFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag(DIALOG_LOST);
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);
    if(pos == 0){
        DialogFragment newFragment = DialogLostFragment.newInstance(1);
        newFragment.show(ft, DIALOG_LOST);
        pos = 1;
        editor.putInt(POSITION, pos);
        editor.apply();

    }else if(pos == 1){
        DialogFragment newFragment = DialogWinFragment.newInstance(1);
        newFragment.show(ft, DIALOG_WIN);
        pos--;
    }

}

如何做这个代码工作的人?

2 个答案:

答案 0 :(得分:1)

在我的应用程序中,我这样做。

我有和侦听器接口的Activity和DialogFragment1。 当我创建一个对话框并设置为Listener时,我的当前Activity实现了这个接口

void onDialogFragment1Action() {
     dialogFragment1.close();
     dialogFragment2.show();
}

您在Activity中而不是DialogFragment中所做的所有必要操作。

target/

答案 1 :(得分:0)

你可以使用coundowntimer。你必须要时间进行第一次对话。

  CountDownTimer waitTimer = new CountDownTimer(6000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {

        //first dialog
    }

    @Override
    public void onFinish() {
    //second dialog

    }
}.start();