2013-06-05 9 views
6

so di poter fare una classe ricevitore interno per chiamare qualsiasi metodo dal mio ricevitorechiamare un metodo di un'attività da una classe BroadcastReceiver

Ma la mia attività principale è troppo dannatamente grande e fa un sacco di cose. Quindi avrò bisogno di una classe che estenda il ricevitore broadcast ma che non sia una classe interiore. E posso chiamare un metodo dalla mia attività principale. Non so se è possibile ma la mia attività è un'attività di Home e un'attività "singleInstance", quindi forse con questo dettaglio qualcuno ha un modo per accedere alla mia attività.

Se è impossibile un modo per suddividere un codice Java in più file, il mio principale ha più di 600 righe. (E per le informazioni che ho già 19 file java per una versione alpha delle mie applicazioni così ho provare a dividerlo)

+0

non si può passare il contesto di attività al vostro BrodcastRecevier e utilizzarlo per avviare l'attività? – Blackbelt

+0

L'attività è sempre in avvio, non voglio avviarla dal ricevitore, basta chiamare un metodo. – Jebik

risposta

18

Creare il BroadcastReceiver dinamicamente:

Nella classe BroadcastReceiver definire membro della classe:

YourMainActivity yourMain = null; 

e metodo:

setMainActivityHandler(YourMainActivity main){ 
yourMain = main; 
} 

dal MainActivity fare:

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

infine, quando viene licenziato yourBR.onReceive è possibile chiamare:

yourMain.methodOfMainActivity(); 
+0

Devo definire la mia azione in Manifest con questo metodo o intentfilter è sufficiente per ottenere la trasmissione? – Jebik

+0

Il filtro intento è sufficiente – blganesh101

+1

Ok grazie, ci provo. basta modificare la tua modifica di post chiamataInterceptor dal tuoBR nel registroRichievi la chiamata se un'altra persona legge questo: P – Jebik