Como estabelecer comunicação entre fragmentos no Android?

Oct 21, 2026Deixe um recado

No domínio do desenvolvimento Android, os fragmentos surgiram como uma ferramenta poderosa para a criação de interfaces de usuário modulares e reutilizáveis. Os fragmentos permitem que os desenvolvedores dividam uma atividade em componentes menores e independentes, tornando o aplicativo mais flexível e adaptável a diferentes tamanhos e orientações de tela. No entanto, um dos desafios que os desenvolvedores frequentemente enfrentam é como comunicar eficazmente entre esses fragmentos. Como fornecedor de fragmentos, entendo a importância da comunicação perfeita entre fragmentos e, nesta postagem do blog, compartilharei algumas estratégias e práticas recomendadas para conseguir isso.

Compreendendo a necessidade de comunicação de fragmentos

Antes de nos aprofundarmos nos métodos de comunicação, é essencial entender por que a comunicação entre fragmentos é necessária. Os fragmentos são projetados para serem modulares, mas geralmente precisam trabalhar juntos para fornecer uma experiência de usuário coesa. Por exemplo, uma ação do usuário em um fragmento pode precisar acionar uma alteração em outro fragmento. Isso pode envolver a passagem de dados, a atualização da IU ou a execução de uma ação específica. Sem comunicação adequada, os fragmentos funcionariam isoladamente, levando a um aplicativo desarticulado e sem resposta.

Métodos de comunicação entre fragmentos

Existem várias maneiras de comunicar entre fragmentos no Android. Cada método tem suas próprias vantagens e desvantagens, e a escolha depende dos requisitos específicos do seu aplicativo.

1. Usando uma interface

Uma das formas mais comuns e recomendadas de comunicação entre fragmentos é usando uma interface. Esta abordagem envolve definir uma interface no fragmento que precisa enviar dados ou eventos e implementar essa interface na atividade de hospedagem. O fragmento pode então chamar os métodos de interface para se comunicar com a atividade, que por sua vez pode passar as informações para outros fragmentos.

Aqui está um exemplo:

2-(1-(2-Fluorobenzyl)piperidin-4-yl)-1H-benzo[d]imidazole1-(4-Chlorophenyl)-5-methyl-1H-pyrazole-4-carboxylic Acid

// Define uma interface no fragmento de envio public interface OnDataPass { void onDataPass(String data); } // Implementar a interface na atividade de hospedagem public class MainActivity extends AppCompatActivity implements OnDataPass { @Override public void onDataPass(String data) { // Passar os dados para outro fragmento AnotherFragment anotherFragment = (AnotherFragment) getSupportFragmentManager().findFragmentById(R.id.another_fragment); if (anotherFragment! = null) { anotherFragment.updateUI(data); } } } // No fragmento de envio public class SendingFragment estende Fragment { private OnDataPass dataPasser; @Override public void onAttach(contexto de contexto) { super.onAttach(context); tente {dataPasser = (OnDataPass) contexto; } catch (ClassCastException e) { throw new ClassCastException(context.toString() + "deve implementar OnDataPass"); } } public void sendData(String dados) { dataPasser.onDataPass(dados); } }

2. Usando um ViewModel compartilhado

Outra abordagem é usar um ViewModel compartilhado. ViewModel faz parte dos componentes da arquitetura do Android projetados para armazenar e gerenciar dados relacionados à IU de maneira consciente do ciclo de vida. Ao compartilhar um ViewModel entre fragmentos, eles podem observar alterações nos dados e atualizar a IU de acordo.

// Cria um ViewModel compartilhado public class SharedViewModel estende ViewModel { private final MutableLiveData<String> data = new MutableLiveData<>(); public void setData(String newData) { data.setValue(newData); } public LiveData<String> getData() { retornar dados; } } // No fragmento de envio public class SendingFragment estende Fragment { private SharedViewModel sharedViewModel; @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); sharedViewModel = novo ViewModelProvider(requireActivity()).get(SharedViewModel.class); } public void sendData (String dados) { sharedViewModel.setData (dados); } } // No fragmento de recebimento public class RecomingFragment estende Fragment { private SharedViewModel sharedViewModel; @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); sharedViewModel = novo ViewModelProvider(requireActivity()).get(SharedViewModel.class); sharedViewModel.getData().observe(getViewLifecycleOwner(), new Observer<String>() { @Override public void onChanged(String data) { // Atualizar a IU } }); } }

3. Usando um gerenciador de transmissão local

O Local Broadcast Manager é uma forma de enviar e receber transmissões dentro do seu aplicativo. Você pode usá-lo para enviar mensagens entre fragmentos. Essa abordagem é útil quando você deseja se comunicar entre fragmentos que não estão diretamente relacionados ou quando precisa enviar uma mensagem para vários fragmentos de uma só vez.

// No fragmento de envio public class SendingFragment extends Fragment { private LocalBroadcastManager localBroadcastManager; @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); localBroadcastManager = LocalBroadcastManager.getInstance(requireContext()); } public void sendMessage(String mensagem) { Intent intent = new Intent("custom-event-name"); intent.putExtra("mensagem", mensagem); localBroadcastManager.sendBroadcast(intenção); } } // No fragmento de recebimento public class ReceptiveFragment estende Fragment { private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String message = intent.getStringExtra("message"); //Atualiza a IU } }; @Override public void onResume() { super.onResume(); LocalBroadcastManager.getInstance(requireContext()).registerReceiver(receptor, new IntentFilter("nome do evento personalizado")); } @Override public void onPause() { super.onPause(); LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(receptor); } }

Nossas ofertas de fragmentos

Como fornecedor de fragmentos, oferecemos uma ampla variedade de fragmentos de alta qualidade para atender às suas necessidades de desenvolvimento. Nossos fragmentos são cuidadosamente projetados e testados para garantir compatibilidade e desempenho. Aqui estão alguns de nossos fragmentos em destaque:

Conclusão

A comunicação eficaz entre fragmentos é crucial para a criação de um aplicativo Android integrado e responsivo. Usando os métodos descritos acima, você pode garantir que seus fragmentos funcionem juntos de forma harmoniosa. Quer você opte por usar uma interface, um ViewModel compartilhado ou um Local Broadcast Manager, o segredo é selecionar a abordagem que melhor atende aos requisitos do seu aplicativo.

Se você estiver interessado em nossos fragmentos ou tiver alguma dúvida sobre a comunicação de fragmentos, não hesite em nos contatar para uma negociação de compra. Temos o compromisso de fornecer a você os melhores produtos e serviços para apoiar seus projetos de desenvolvimento Android.

Referências

  • Documentação para desenvolvedores Android
  • Guia de componentes da arquitetura Android
  • Design eficaz de UI Android por Mark Murphy

Enviar inquérito

whatsapp

Telefone

Email

Inquérito