2015-07-03 57 views
0

我開始從對話的片段對話片段B A如何正確啓動dialogfragment的dialogframent?

CreateNewPlayListDialog newPlayListDialog = new CreateNewPlayListDialog(); 
        Bundle b = new Bundle(); 
        b.putInt("id", videoId); 
        newPlayListDialog.setArguments(b); 
        newPlayListDialog.show(getChildFragmentManager(), "dialog_new_playlist"); 

而這就是作品。但firstDialogFragment不會被取消。
如果我嘗試

CreateNewPlayListDialog newPlayListDialog = new CreateNewPlayListDialog(); 
        Bundle b = new Bundle(); 
        b.putInt("id", videoId); 
        newPlayListDialog.setArguments(b); 
        newPlayListDialog.show(getChildFragmentManager(), "dialog_new_playlist"); 
        PlayListChooserDialog.this.dismiss(); 

然後dialogfragment B開始,並imidiatly取消,對話框中依然存在;

如何從對話框中啓動對話框B如對話框A將被取消?

回答

0

片段解僱只是從堆棧中刪除最後一個片段的包裝。

請交換的最後兩行:

PlayListChooserDialog.this.dismiss(); 
newPlayListDialog.show(getChildFragmentManager(), "dialog_new_playlist"); 

如果你得到的例外(取決於什麼代碼做的其餘部分),那麼最保險的辦法是在你的活動直接到達的方法和加載其他從那裏的片段,例如

public final ApplicationActivity extends Activity { 
    public void onDialog(String whichOne) { 
     if (TextUtils.isEmpty(whichOne) { 
      return; 
     } 
     if (whichOne.equals.PlayListDialog.NAME) { 
      newPlayListDialog.show(getChildFragmentManager(), "dialog_new_playlist"); 
     } 
     else if(...) { 
      ... 
     } 
    } 
} 

public final PlayListDialog extends DialogFragment { 
    public static final String NAME = PlayListDIalog.class.getSimpleName(); 
    ... 
} 

然後在你的代碼,你打發碎片A

((ApplicationActivity) getActivity()).onDialog(PlayListDialog.NAME); 
PlayListChooserDialog.this.dismiss(); 
+0

交換沒有幫助第一個對話框的 – Yarh

+0

重定向結果的活動,並從活動的確有助於開始新的對話 – Yarh