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
- public final class SampleReceiver extends BroadcastReceiver {
- public static final String SAMPLE_DATA_EXTRA = "sample_extra";
- private OnSampleReadyListener mListener;
- @SuppressWarnings("unused")
- public SampleReceiver() {}
- public SampleReceiver(OnSampleReadyListener listener) {
- mListener = listener;
- }
- @Override
- public void onReceive(Context context, Intent intent) {
- final String someExampleData = intent.getStringExtra(SAMPLE_DATA_EXTRA);
- mListener.onSampleDataReady(someExampleData);
- }
- public interface OnSampleReadyListener {
- 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:
- public class MainActivity extends AppCompatActivity implements OnSampleReadyListener {
- private SampleReceiver mReceiver;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //Pass an instance of the listener to your receiver...
- mReceiver = new SampleReceiver(this);
- }
- //..Set up your Activity to listen for your Broadcast Receiver...
- //Run any logic related to received broadcasts here
- @Override
- public void onSampleDataReady(String someExampleData) {
- Log.d("TAG", "Data Received: " + someExampleData);
- }
- }
Articoli simili
- Come chiamare una classe da un'altra classe in Java
- Come possiamo chiamare il metodo service dal metodo doGet o doPost nella servlet?
- Come si chiama un metodo principale in un altro metodo principale di classe in Java?
- Come ottenere il valore di una variabile da una classe ad un'altra classe in Python