Como chamar o método Atividade Principal em outra classe no Android
Se você está se referindo a algo como:
nova Atividade Principal().doMeuMeuMétodo();
então isso não é possível.
a resposta real depende inteiramente do que você está tentando alcançar. Pode ser que a resposta envolva passar uma referência à sua Activity para outra classe, ou usar uma interface, ou usar um EventBus como o LocalBroadcastManager, ou iniciar uma nova Activity com uma intenção e alguma forma de bandeira passada para o seu pacote de "extras", ou algo completamente diferente.
Adicionar mais informações sobre o que você está tentando alcançar para a descrição da sua pergunta vai ajudar.
Editar:
Agora que eu entendo que o objetivo é chamar um método em uma Atividade de um BroadcastReceiver, eu posso explicar como neste caso eu quase uso uma interface. Aqui está um exemplo deste trabalho:
P>Primeiro, crie uma interface para transmitir os dados que você quer enviar a partir do seu 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);
- }
- }