2013-06-05 43 views
6

調用一個動作的方法,我知道我可以從我的接收器從一個BroadcastReceiver類

做一個內部的接收機類調用任何方法,但是我的主要活動是太他媽的大,做了很多事情。 所以我需要擴展廣播接收器,但誰不是一個內部類的類。並且可以從我的主要活動中調用一種方法。我不知道這是可能的,但我的活動是家庭活動和「singleInstance」活動,所以也許這個細節有人有辦法來訪問我的活動。

如果不可能以任何方式在多個文件中分割一些java代碼,我的主要有600多行。 (和信息,我有我的應用程序的alpha版本已經19個java文件,所以我已經試圖把它分解)

+0

你不能傳遞活動場景你BrodcastRecevier,並用它來啓動的活動? – Blackbelt

+0

這個活動總是啓動我不想從接收器啓動它只是調用一個方法 – Jebik

回答

18

創建廣播接收器動態:

在你的廣播接收器類中定義的類成員:

YourMainActivity yourMain = null; 

和方法:

setMainActivityHandler(YourMainActivity main){ 
yourMain = main; 
} 

從您的MainActivity做:

private YourBroadcastReceiverClassName yourBR = null; 
yourBR = new YourBroadcastReceiverClassName(); 
    yourBR.setMainActivityHandler(this);  
    IntentFilter callInterceptorIntentFilter = new   IntentFilter("android.intent.action.ANY_ACTION"); 
    registerReceiver(yourBR, callInterceptorIntentFilter); 

最後,當yourBR.onReceive被觸發,你可以撥打:

yourMain.methodOfMainActivity(); 
+0

需要我在這個方法或intentfilter清單中定義我的行動是否足以獲得廣播? – Jebik

+0

意圖過濾器是不夠 – blganesh101

+1

好,謝謝我試試這個。如果另一個人讀到這個,只需在registerReceiver調用中通過yourBR編輯您的發佈後修改的callInterceptor:P – Jebik

相關問題