QNA > C > Come Chiamare Il Metodo Main Activity In Un'altra Classe In Android

Come chiamare il metodo Main Activity in un'altra classe in Android

Se vi riferite a qualcosa come:

new MainActivity().doMyMethod();

allora questo non è possibile.

La risposta effettiva dipende interamente da cosa state cercando di ottenere. Potrebbe essere che la risposta implichi il passaggio di un riferimento alla vostra attività ad un'altra classe, o l'uso di un'interfaccia, o l'uso di un EventBus come LocalBroadcastManager, o l'avvio di una nuova attività con un Intent e una qualche forma di bandiera passata nel suo Bundle "extra", o qualcosa di completamente diverso.

Aggiungi maggiori informazioni su ciò che stai cercando di ottenere nella descrizione della tua domanda aiuterà.

Modifica:

Ora che ho capito che lo scopo è chiamare un metodo in un'attività da un BroadcastReceiver, posso spiegare come in questo caso quasi uso un'interfaccia. Ecco un esempio di come funziona:

Prima di tutto, create un'interfaccia per trasmettere i dati che volete inviare dal vostro BroadcastReceiver. Here, for example, it is OnSampleReadyListener

  1. public final class SampleReceiver extends BroadcastReceiver { 
  2.  
  3. public static final String SAMPLE_DATA_EXTRA = "sample_extra"; 
  4.  
  5. private OnSampleReadyListener mListener; 
  6.  
  7. @SuppressWarnings("unused") 
  8. public SampleReceiver() {} 
  9.  
  10. public SampleReceiver(OnSampleReadyListener listener) { 
  11. mListener = listener; 
  12.  
  13. @Override 
  14. public void onReceive(Context context, Intent intent) { 
  15. final String someExampleData = intent.getStringExtra(SAMPLE_DATA_EXTRA); 
  16. mListener.onSampleDataReady(someExampleData); 
  17.  
  18. public interface OnSampleReadyListener { 
  19. void onSampleDataReady(String someExampleData); 

Then, set up your Activity class to pass an instance of OnSampleReadyListener, and set up your Activity to listen for Broadcasts:

  1. public class MainActivity extends AppCompatActivity implements OnSampleReadyListener { 
  2.  
  3. private SampleReceiver mReceiver; 
  4.  
  5. @Override 
  6. protected void onCreate(@Nullable Bundle savedInstanceState) { 
  7. super.onCreate(savedInstanceState); 
  8. //Pass an instance of the listener to your receiver... 
  9. mReceiver = new SampleReceiver(this); 
  10.  
  11. //..Set up your Activity to listen for your Broadcast Receiver... 
  12.  
  13. //Run any logic related to received broadcasts here 
  14. @Override 
  15. public void onSampleDataReady(String someExampleData) { 
  16. Log.d("TAG", "Data Received: " + someExampleData); 

Di Attenborough

Cos'è un metodo privato in Java? :: Come possiamo chiamare il metodo service dal metodo doGet o doPost nella servlet?
Link utili