2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
好的,我會(huì)在這里詳細(xì)解釋。
15 秒前您使用下面的行創(chuàng)建了一個(gè)對(duì)話框,我們稱之為object1
EthernetControlFragment.newInstance()
然后 15 秒后,您再次object2
使用上面的行創(chuàng)建一個(gè)新對(duì)話框,當(dāng)您關(guān)閉它時(shí),您也關(guān)閉了這個(gè)新對(duì)話框object2
。不幸的是,您沒(méi)有保留舊對(duì)話框的參考,dialog1
這是真正的問(wèn)題。
解決方案是僅創(chuàng)建一個(gè)對(duì)象,因此創(chuàng)建類的全局引用EthernetControlFragment
并僅在其為空時(shí)才對(duì)其進(jìn)行初始化。這樣你就只有一個(gè)對(duì)話框。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
我解決了我的問(wèn)題。調(diào)用片段如下:
Fragment prev = ((FragmentActivity) activity).getSupportFragmentManager().findFragmentByTag("ethernet");
if (prev == null) {
ethernetControlFragment.show(((FragmentActivity) activity).getSupportFragmentManager(), "ethernet");
ethernetControlFragment.setCancelable(false);
}
并像這樣解雇:
Fragment prev = ((FragmentActivity) activity).getSupportFragmentManager().findFragmentByTag("ethernet");
if (prev != null) {
EthernetControlFragment df = (EthernetControlFragment) prev;
df.dismiss();
}
我認(rèn)為這些方法是調(diào)用和消除片段最可靠的方法。
添加回答
舉報(bào)