1. 程式人生 > >Android EventBus在Fragment中不起作用的解決方法

Android EventBus在Fragment中不起作用的解決方法

一、AndroidEventBus。

二、問題出現情形。

AndroidEventBus在Fragment中註冊,由其他地方向Fragment中post事件。

三、問題出現原因。

由其他地方向Fragment post事件的時候,Fragment還未初始化,也即AndroidEventBus在此Fragment中還未註冊,所以收不到事件。

四、問題解決辦法。

1.在程式中想辦法先初始化此Fragment,比如app中首頁四個Tab分頁,由第一個分頁向第三個分頁post事件時,如果剛進入app且沒有操作的情況下,第三個Fragment一般都是未初始化的,這種情況可以在進入預設第一個分頁時先進入第三個分頁,然後立馬再切換到第一個分頁,這樣使用者是看不出切換過程的,而第三個Fragment也初始化了。示例程式碼如下:

setTabSelection(2);//先選擇第三個Tab分頁
setTabSelection(0);//然後立馬切換到預設的第一個Tab分頁
在這之後在post事件,應該就沒問題了。

2.採用延時post的形式。即先切換到要post事件的Fragment,等待幾十毫秒後再post事件,這樣既可解決未初始化問題。

五、特殊情況

在這樣有個特殊情況,如果在Fragment中使用了TabLayout,則只能採用延時的方式。因為TabLayout在Fragment中初始化標題會有個延時情況,如果採用第一種方式,則不會顯示標題。

相關推薦

android:layout_marginRight 作用解決方法

今天想在RelativeLayout的左右分別放上一個按鈕, 左邊按鈕用marginLeft=”10dp”,空出了10dp的距離,沒問題. 但是右邊的按鈕marginRight=”10dp”就是過不去. 試了很久,最後在這個程式碼前加了一條android:

Shiro unauthorizedUrl 作用解決方法

Shiro 通過註解方式判斷當前使用者沒有許可權時,跳轉不到指定的錯誤頁面,就是因為 unauthorizedUrl 不起作用,解決方法就是在 shiro 配置中加上下面這一段配置(異常全路徑做key,錯誤頁面做value) <bean class="org.springfram

Qt 佈局設定stretch,作用解決方法

addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) insertStretch(int index, int stretch = 0) setStretchFactor(

flex佈局下文字超出省略號代替作用解決方法

專案中發現,在flex佈局下,希望目標元素文字超出省略號時,text-overflow: ellipsis屬性無效,結論是設定文字超出省略號的元素,display屬性不能為flex!!! display屬性不能為flex!!!display屬性不能為flex!!!設定成blo

'autocomplete="off"'在Chrome作用解決方案

最近專案中遇到一個令人頭疼的問題,查閱各種資料,嘗試各種方法,最終得以解決;哎···下面就說說這心酸的歷程吧。 大家都知道autocomplete屬性是表單欄位中的HTML5新屬性,該屬性有兩種狀態值,分別為"on" 和 "off",該屬性可省略:省略屬性值後預設值為"

Android EventBus在Fragment作用解決方法

一、AndroidEventBus。 二、問題出現情形。 AndroidEventBus在Fragment中註冊,由其他地方向Fragment中post事件。 三、問題出現原因。 由其他地方向Fragment post事件的時候,Fragment還未初始化,也即And

android RelativeLayoutandroid:layout_marginBottom的作用問題

RelativeLayout佈局中: 1、當設定為android:layout_height="wrap_content"時,最下面的控制元件layout_marginBottom屬性無效,如果其他控制元件使用layout_above讓自己處於最下面的控制元件之上,那麼layout_margi

Struts2JSTL標籤作用解決辦法

1.設定某個jsp頁面使用el表示式,需要在jsp頁面加上(控制單個頁面) <%@ page isELIgnored="false"%>  //我設定了這點就可以了, 2.看你的web.xml檔案中頭的引用應該是 2.4.xsd <web-app id="WebApp_

解決Tabhost.setCurrentTab()作用方法

方法一 修改TabWidget 的 mSelectedTab欄位 try { Class<TabWidget> tabWidgetClass = (Class<TabWidget>) mTabhost.getTabW

BrowserSync的大坑,監聽作用解決辦法,附gulp瀏覽器同步自動重新整理部署方法

                能將本地伺服器代理到localhost:3000/localhsot:3001的操作:按照官網來操作的程式碼是不起作用的:browser-sync start --proxy "127.0.0.1:8081" "E:/newcrm/trunk/4_Tools/crm/**/*.

Chrome瀏覽器autocomplete="off"作用解決方案

統一 type toc 網上 word 清除 登錄 保存 input 多數瀏覽器默認會緩存input的值,只有使用ctl+F5強制刷新的才可以清除緩存記錄。 如果不想讓瀏覽器緩存input的值,有2種方法: 方法一: 在不想使用緩存的input中添加 autocompl

過濾器Filter在配置文件作用

-c 文件夾 -name 都是 文件中 不起作用 gin utl 項目 web.xml內容 <filter> <filter-name>LoginFilter</filter-name> <filter-class>com.s

servlet3.0註解loadOnStartup作用解決方案

color fig 運行 exc back tar med -c spa   多次嘗試3.0在源碼中直接用註解配置loadOnStartup=1,即web應用啟動時創建servlet實例,發現不起作用,但是在web.xml配置則可以正常運行。先上源碼。 package l

CSS z-index在ie67作用

div relative 元素 ima 作用 nbsp chrome 正常 absolute 在chrome瀏覽器中可以看到這樣的效果:                        但是在ie67中看到的是:                                

iOS Git建立gitignore檔案, gitignore 作用解決辦法

1.建立gitignore檔案 開啟終端, cd 進入到專案所在目錄,輸入touch gitignore即可, 然後編輯 gitignore, 編輯成功之後, mv gitignore .gitignore換名字, 這個時候.gitignore檔案會自動消失, 點檔案不能顯示的. 在該資料夾下打

微信小程式設定height 100% 作用解決辦法

https://blog.csdn.net/wshpwangshiyu/article/details/79744884 問題:微信小程式設定背景圖片高度適應整個螢幕,設定height 100% 不起作用? .container-all{ width: 100%; he

手機端input[type=date]的時候placeholder作用解決方案

手機端input[type=date]的時候placeholder不起作用解決方案   目前PC端對input 的date型別支援不好,我試下來的結果是隻有chrome支援。firefox、IE11 都不支援。而且PC端有很多日曆控制元件可供使用。就不去多考慮這點了。 那麼在移動端

ubuntu Android開發eclipse識別手機解決方法!(附步步高vivo解決方法

也是花了我好久時間,最終才找到一個完整且簡單還可以直接見效的好方法。 方法兩個: 如果您的手機是比較好的大廠商牌子,如Moto,三星..什麼的,那麼就按部就班即可: 在終端輸入 sudo gedit /etc/udev/rules.d/51-android.rules在開

JSP頁面使用Jquery.validate時作用方法

今天在jsp頁面使用jquery.validate.js校驗表單時,始終不起作用,找了大半天終於搞定了。。 form標籤旁邊顯示Invalid location of tag,在網上查了下,還是無果,

Git忽略檔案作用解決方案

       開發過程中由開發工具生成的檔案一般不需要提交,但每次開發工具會自動去修改這些檔案,每次都要去提交這些東西,不提交會有一系列問題,很煩人。        可以通過配置.gitignore檔案讓git不在跟蹤記錄這些檔案。心血來潮去配置的時候,發現配