解決Dialog在第二次開啟時報錯的問題
Dialog第二次開啟報錯是出現在自定義的Dialog中,Dialog在被第二次開啟的時候其試圖已經存在,而你再次開啟它,Dialog會認為此檢視已有了父容器而你還要為人家新增一個父容器,這樣Dialog肯定不同意呀。
解決方法一:
在每次Show的時候,都重新LayoutInflater一次然後再次為Dialog設定setView,這樣就好了。
程式碼(這裡貼出一部分程式碼):
view = LayoutInflater.from(mActivity).inflate(R.layout.edit_dialog, null);
editText = (EditText) view.findViewById (R.id.dialog_edit);
builder.setView(view);
builder.show();
在你顯示Dialog的地方寫這些程式碼
解決方法二:
我相信大家在使用自定義dialog時用的都是AlertDialog.Builder,然後使用builder.setView()來實現自定義Dialog的吧,如果要顯示就呼叫builder.show();
如果要取消顯示的話,builder是沒有dismiss()方法的,但是builder.show()方法返回一個dialog物件,你可以使用這個物件去呼叫dismiss()方法。
我以前也是這麼做的,這樣做導致你第二次呼叫builder.show()程式崩掉,而我們要解決這一現象也很簡單,方法就是我們不要用builder.show(),而是使用dialog.show(),在這裡可能有人疑惑了,dialog這個物件不是在builder.show()之後才有的嗎。
你以為只有這一個方法獲取dialog物件嗎,其實不是的:
//這個方法也會返回一個dialog物件
dialog = builder.create();
所以我們要使用這個dialog物件去show()和dismiss(),這樣就不會導致程式蹦掉了,我也感覺這才是AlertDialog.Builder的正確使用方法。
PS:推介使用第二種方法解決你的Dialog第二次開啟時崩潰的問題。
筆記寫完了,希望能對大家有點幫助。
相關推薦
解決Dialog在第二次開啟時報錯的問題
Dialog第二次開啟報錯是出現在自定義的Dialog中,Dialog在被第二次開啟的時候其試圖已經存在,而你再次開啟它,Dialog會認為此檢視已有了父容器而你還要為人家新增一個父容器,這樣Dialog肯定不同意呀。 解決方法一: 在每次Show的
關於多個Fragment切換,退出整個應用(APP)後,第二次開啟應用的報錯解決
第二次開啟APP的時候,fragment事物的.commit()或者 在退出整個應用的那個Activity,如HomeActivity的重寫回退事件onBackPressed()裡面寫上android.os.Process.killProcess(android.os.
Source Insight 3.5 工程打不開(開啟時報錯)問題的解決--自己也遇到的問題
這是第二次使用Source Insight3.5,之所以說是第二次,是因為之前有幾天不愉快的使用經歷——關閉後的專案打不開,每次都是報錯後退出。以為是安裝或版本的問題。為了閱讀程式碼方便,隔了近兩個月再次使用,一直正常,直到想開啟前面建立的工程時問題再次出現。嘗試了好多方
關於eclipse依賴其他專案第一次依賴顯示成功,第二次開啟就變紅叉的情況解決方案
近來由於工作需求,不能使用android studio來開發Android Design Support Library 中的新控制元件,只能使用eclipse開發,以NavigationView 的引用為例,要在eclipse中使用NavigationView 需要新增v
為什麽jdbc中的resultset只能取一次去第二次就報錯了
port 範圍 popu epo test span locked inf png 引用 6 樓 的回復: 好吧各位,應該寫getInt(1)但是我要問的是為什麽第二次用會出錯 啊,好古老的一個問題。。。第二次出錯的原因,是因為你創建Statement的時候,
只開啟一個程式,如果第二次開啟則自動將第一個程式顯示到桌面
using System;using System.Collections.Generic;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;using System.Refl
phpstudy開啟時報錯:丟失MSVCR110.dll
之前一直在用php7.2的版本,最近由於專案需要,就切換成5.6版本,但是開啟時報錯丟失MSVCR110.dll檔案 附圖: 就是缺少這樣的dll檔案,是沒有安裝Visual C++ Redistributable for Visual Studio 2012 所以我們就要去下載,下
DB2資料庫表空間異常解決辦法(load資料庫時報錯,)
解決辦法:即就是需要空備資料,按下面執行方法執行: 1.連線資料庫: db2 connect to xdhsdb 2.查看錶空間狀態: db2 list tablespaces show det
Android 自定義相機第二次開啟卡死
原因:相機沒有被正確釋放導致第二次打卡死。 //正確的釋放資原始碼 public void release(){ if (mCamera != null) { mCamera.setPreviewCallback(null) ;
Mac VMware Fusion 開啟時報錯 "打不開/dev/vmmon"
和HAXM或者docker衝突,解決辦法: 1. sudo rm -rf /System/Library/Extensions/vmmon.kext ,根據提示輸入管理員密碼; 2. sudo cp -pR /Applications/VMware\ Fusion.app
Ueditor富編輯器第二次開啟的時候會渲染失敗
1、在頁面或視窗關閉的時候,通過監聽頁面或視窗事件,在函式裡面銷燬富編輯器 if(typeof(UE.getEditor("newsContentAdd")) !='undefined'){ UE.getEditor("newsContentAdd"
android 異常問題 Scrollview中巢狀webview出現大面積空白(第二次開啟同一個地址下面才出現空白)
考慮到可能是因為有快取的原因,在每次開啟呼叫webview的時候,對其進行了快取清理操作 //下面程式碼用來解決Scrollview中巢狀webview導致下面大片空白的問題 4.0以上不起作用 webSettings.setLayoutAlgorithm(Web
Edittext不可編輯可點選 & 解決Edittext第二次點選才有效
問題1:Edittext不可編輯可點選 1、Edittext在新的api裡已經把editable功能標記deprecated。 2、但是如果設定enabled為false的話,點選事件也無效了。 解決1:設定focusable方法 哎,之前因為android studio的
android應用activity第一次進入正常第二次進入報錯
在android 開發中工作中遇到一個問題,第一次進入應用,正常退出,若採用finish(),則第二次進入時候,程式出現如下錯誤(程式碼中有serversocket) 若是退出時在finish(),之後在繼續呼叫system.exit(0),則第二次進入
每次重啟伺服器tomcat開啟時報錯
Jul 03, 2017 11:24:03 AM org.apache.catalina.core.StandardServer await SEVERE: StandardServer.await: create[8005]: java.net.BindException: Address already
同一個Thread啟動第二次會報錯java.lang.IllegalThreadStateException
先實現Thread程式碼 public class TestThread { public static void main(String[] args) { for (
解決mysql資料庫新增資料時報錯:1366
中文資料提交到mysql資料時報了個錯誤: Warning Code : 1366 Incorrect string value: '\xE5\x9C\xA8' for column 'conten
解決Navicat連接Oracle時報錯ORA-28547
裏的 ntc alt pro nbsp acl 分享圖片 tcl avi 1:ORA-28547 原因:navicate Primium版本的OCi和本地數據庫的OCI版本不一致。 解決方法: 1:把navicate Primium版本自帶oci.dll替換本地O
element-ui + el-dialog + Vue.component 註冊的富文字控制元件 第二次及以後開啟dialog出現問題解決方法
自定控制元件 新增屬性 v-if="dialogVisible" <el-dialog title="" :visible.sync="dialogVisible" :append-to-body="true"> <my-editor v-model="
IE 下使用window.open() 開啟同一頁面,第二次的時候不自動跳轉解決方法
解決方法 定義一個全域性變數記錄window.open()開啟的窗體 如過該變數被記錄過,則先關閉該視窗,然後再次開啟新視窗即可 eg: /*記錄當前開啟的窗體/ var showDocContentWindow; function showCivilD