1. 程式人生 > >DialogFragment 在呼叫dismiss之後再呼叫getdialog.show()報錯

DialogFragment 在呼叫dismiss之後再呼叫getdialog.show()報錯

最近實現一個仿支付寶支付底部彈框的需求,需要用到dialog,在網上參考了一個簡單實現的,用的dialogfragment的。這個我還是第一次用,以前都是直接dialog。關於dialogfragment 就不介紹了,網上文章很多。
根據產品給我的需求,我要修改很多東西,。
我需要在點選dialogfragment之間一個按鈕彈出一個新的dialog,希望dialogfragment關掉,當新dialog關閉在開啟,但是要保證狀態資料還是之前的。我就想到啦先dismiss,再show(),但是show()的時候就空指標了,沒辦法,查了網上很多,沒有相關的,。
dismiss的時候dialogfragment是移除了,在這裡面用show()是無效的,和dialog不同。
解決:我想到了dialog裡面的hide()方法,隱藏。
檢視dialog.hide()的註釋:
Hide the dialog, but do not dismiss it。
說明只是隱藏dialog檢視,並沒有把檢視移走。
檢視hide的原始碼你會發現:
/**
* Hide the dialog, but do not dismiss it.
*/
public void hide() {
if (mDecor != null) {
mDecor.setVisibility(View.GONE);
}
}
只是把檢視設為了GONE。
再看dismiss()方法:
void dismissDialog() {
if (mDecor == null || !mShowing) {
return;
}
if (mWindow.isDestroyed()) {
Log.e(TAG, “Tried to dismissDialog() but the Dialog’s window was already destroyed!”);
return;
}
try {
mWindowManager.removeView(mDecor);
} finally {
if (mActionMode != null) {
mActionMode.finish();
}
mDecor = null;
mWindow.closeAllPanels();
onStop();
mShowing = false;

        sendDismissMessage();
    }
}

是整個結束掉這個檢視,會呼叫onStop()。
通常我們都是呼叫dismiss,hide這個估計是短暫消失使用的吧
實現了需求,記錄一下

相關推薦

DialogFragment呼叫dismiss之後呼叫getdialog.show()

最近實現一個仿支付寶支付底部彈框的需求,需要用到dialog,在網上參考了一個簡單實現的,用的dialogfragment的。這個我還是第一次用,以前都是直接dialog。關於dialogfragment 就不介紹了,網上文章很多。 根據產品給我的需求,我要修

呼叫百度地圖 5.0手機java.lang.UnsatisfiedLinkError: No implementation found for int

java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create() (tried Java_com_b

前端開發手機端呼叫開發者工具(控制檯資訊,,介面資訊等),ios安卓通用vue-cli專案中mockjs和vConsole的使用

在vue-cli專案中mockjs和vConsole的使用 mockjs使用 1.安裝npm install mockjs 2.在src/assets目錄下建立個util資料夾,並在裡新建一個檔案mock.js 如下: const Mock = require(‘m

json字串出現轉義符,導致呼叫者使用ObjectMapper解析成Map

json1串: {"orderCount":0,"signType":"SHA256WithRSA","sign":"85022E420F6F0429A2A1F8774C66C04BFF6085CEE37C6DC085F366733081689C16639B03B34455

解決升級Spark2.0之後,DataFrame map操作

當我們在使用spark1.6的時候,當我們建立SQLContext讀取一個檔案之後,返回DataFrame型別的變數可以直接.map操作,不會報錯。但是升級之後會包一個錯誤,如下:   報錯:No implicits found for parameter evidence$6: Encoder

DialogFragment在Activity執行onSaveInstanceState完成後呼叫showBUG的解決方案

在開發過程中,發現了這樣一個BUG:在用DialogFragment的show(FragmentTransaction transaction,String tag)方法時會報如下BUG:(中間空白為專案程式碼請忽律)  java.lang.IllegalStateExce

nginx訪問靜態頁面(ajax呼叫nginx地址訪問java後臺)

最近在跟著視訊做小示例,併發方面的,然後敲示例的過程中,發現nginx還可以這樣使用,在實際使用nginx有限的我,覺得還是應該記錄一下這種思想 首先,你先有html頁面,後臺生成的也好,還是前後端分離也好,我的頁面在如下目錄裡     然後配置ngin

STM32呼叫SysTick_Config之後無法延時的奇怪問題

操作環境(藍色粗體字為特別注意內容)1,開發板:STM32F103C8T6最小系統核心板。2,開發環境:Keil uv5在我的工程裡面用到SysTick_Config函式,如下: RCC_Configuration(); //系統時鐘設定 NVIC_Configur

java this 子類調父類,父類呼叫子類已覆蓋的方法及屬性(又一次理解)

之前一直以為 this關鍵字 是指呼叫者物件,但是這次才真正理解,this代表當前物件,但是指向呼叫者物件,其實就是多型的用法,如下所示:B 繼承了 A,在B 中呼叫A類的方法,在A 中用this 訪問成員變數和方法,此時,如果用this訪問成員變數,如下,this.s ,

通過java呼叫VBS,用VBS執行Excel中的巨集的例子

(一)  首先需要降低客戶端及伺服器端對於Excel的巨集的安全級別的要求,按照下述的圖示進行操作: (1)進入巨集的安全級別設定功能 (2) 降低巨集的安全級別 (二)  按照下面程式碼編寫VBS程式碼 Option Explicit Dim objXL

解構函式為什麼會自動呼叫父類的解構函式?

原帖: http://bbs.csdn.net/topics/380022416 裡面的討論基本上已經給出答案了,派生類的解構函式在執行完後,會自動執行基類的解構函式,這個是編譯器強制規定的,沒有為什麼,甚至你在解構函式裡呼叫return都不會立即返回到呼叫處,而是會先按順

適配小米手機startActivityForResult之後直接呼叫onActivityResult

今天在測試的過程中遇見一個A activity跳轉B activity之後,結束B之後回傳資料。 使用方法startActivityforForResult(Intent ,requestCode); 然後在onActivityResult中接收處理資料。結果在紅米手機上面

筆記34--ProgressDialog呼叫dismiss()不消失、null是什麼(dead code問題)

知識補充:android開發中將十六進位制顏色程式碼轉換為int型別數值方法 : Color.parseColor("#00CCFF") 返回 int 數值; 1、null是什麼:null雖然能代表一個不確定的物件,但null本身不是物件,也不是Object的例項。 今天

看透之後出手

gcs ppt aos evo and ini sil grv nba 看透之後再出手 瘥梘 喙 搿頓燔 http://auto.315che.com/xinsaiou/qa22429836.htm Α哀慘 http://auto.315che.com/y

將一個200*200的盒子以200ms/10px的速到增到到400px之後以同樣的方式縮放到原來的位置

cnblogs int java logs class color classname nts charset <!DOCTYPE html> <html> <head> <meta charset=

ASPxComboBox 自帶輸入法確定之後搜索解決方法

name color value fixed bsp 顯示 val spa string <dx:ASPxComboBox ID="comChargeSubject_FixedFee" ClientInstanceName="comChargeSubject_Fix

活用clone和trigger函式,點選按鈕原有事件不觸發,之後觸發原有事件

活用clone和trigger函式,點選按鈕原有事件不觸發,之後再觸發原有事件 需求: 網站開發完畢了,然後產品說要在原來的’確認按鈕’點選後加一個’彈窗’提醒使用者一些注意事項,在使用者點選彈窗裡面的’同意按鈕’後再執行原來’確認按鈕’ 裡面繫結的事件。需求看起來很簡單,但是有一個要

解決webservice介面呼叫:java.lang.ClassFormatError: Absent Code ... javax/mail/internet/MimeMultip

今天使用java axis呼叫.net釋出的webservice介面報了個錯,排查半天,感覺程式碼邏輯沒問題,最後發現是jar包衝突!!! 呼叫介面相關程式碼: String url="http://xxxx/WebService/ForDxService.asmx?wsdl";

for迴圈呼叫刪除方法解決辦法

1.每次刪除一個元素,索引往前移,即i-1.      List<String> list = new ArrayList<String>();      list.add("111");  &nbs

【C++】Python呼叫C/C++互相呼叫(轉)

參考源: Python呼叫C/C++互相呼叫 C/C++與python互相呼叫 20181025 1.pytest.py #test function def add(a,b): print " in python function add"