如何以编程方式解雇DialogFragment?我目前通过以下方式创建对话框:
void showDialogWithId(int id){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
if (id == SEARCHING_DIALOG){
// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(SEARCHING_DIALOG,"TEST");
newFragment.show(ft, "dialog");
}
if (id == CONNECTING_DIALOG){
// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(CONNECTING_DIALOG,"TEST");
newFragment.show(ft, "dialog");
}
if (id == CONNECTIVITY_DIALOG){
// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(CONNECTIVITY_DIALOG);
newFragment.show(ft, "dialog");
}
}
Run Code Online (Sandbox Code Playgroud)
我希望通过以下方式解雇他们:
public void dismissDialog(){
getFragmentManager().popBackStack();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
}
Run Code Online (Sandbox Code Playgroud)
但是,对话框没有被驳回......
Zso*_*agy 66
尝试使用
getDialog().dismiss();
Run Code Online (Sandbox Code Playgroud)
在DialogFragments中.因此,例如,您可以通过其标记找到DialogFragment,就像您这样做,然后调用一些调用此代码的方法.我通常不会从Activity中启动DialogFragment的解雇,我的对话框按钮为我做了.但我认为这也应该有效.我不确定这会对片段后台堆栈产生什么影响.
ol_*_*_er 22
要聚合先前的响应和关联的注释,要删除您必须执行的对话:
public void dismissDialog(){
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
DialogFragment df = (DialogFragment) prev;
df.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40381 次 |
| 最近记录: |