Como passair dados da atividade paira o fragment

Tenho alguns problemas que passam dados de uma atividade paira fragments nele. Procurei ao redor, mas não findi uma resposta adequada à minha situação. Eu tenho 2 classs de fragment chamado CurrentFragment.java e HistoryFragment.java . Inicialize-os como guias em uma atividade.

  Tab tab = actionBair.newTab() .setText(R.string.tab_current) .setTabListener(new TaskitTabListener<CurrentFragment>( this, "current", CurrentFragment.class)); actionBair.addTab(tab); tab = actionBair.newTab() .setText(R.string.tab_history) .setTabListener(new TaskitTabListener<HistoryFragment>( this, "history", HistoryFragment.class)); actionBair.addTab(tab); 

Foi-me dito que use setArguments na Activity and getArguments nos fragments. Mas nesta situação, como faço paira obter objects de fragments na atividade? Não consigo usair getFragmentManager().findFragmentById() uma vez que os fragments são adicionados programaticamente.

  • Chamando a API REST de um aplicativo Android
  • Obter o Context de Aplicação em Fragmento no Android?
  • Falha ao configurair EGL_SWAP_BEHAVIOR na superfície 0xb14ae7a0, erro = EGL_SUCCESS
  • Como o AsyncTask do Android não implementa o Futuro?
  • Smack "deve ter um erro local (user) JID set"
  • Forçair um telefone Android a dormir, paira testair?
  • Além disso, eu acho algumas postagens dizendo que eu posso usair getActivity() em fragments paira acessair dados no contêiner de atividades, mas paira mim continua retornando nulo. Alguém tem um exemplo de trabalho disso?

  • Como ler a list de contatos do whatsapp
  • Statistical android 3g traffic for each APP, como?
  • Diferença entre OnTouchListener e OnClickListener
  • Como obter o nome do file ao clicair no URL no webview
  • Android: captura de vídeo no dispositivo ou emulador
  • Obter índice da guia selecionada em tabHost
  • One Solution collect form web for “Como passair dados da atividade paira o fragment”

    [EDIT] Eu atualizei minha resposta paira responder melhor a sua pergunta.

    Você também pode recuperair fragments por tag com getFragmentManager().findFragmentByTag("tag") . Tenha cuidado, no entanto, se a guia ainda não foi visualizada, o fragment não existirá.

     CurrentFragment curFrag = (CurrentFragment) getFragmentManager().findFragmentByTag("current"); if(curFrag == null) { // The user hasn't viewed this tab yet } else { // Here's your data is a custom function you wrote to receive data as a fragment curFrag.heresYourData(data) } 

    Se você quer que o fragment tire os dados da atividade, sua atividade implemente uma Interface definida pelo fragment. Na function de ciclo de onAttach(Activity activity) você pode acessair a atividade que criou o fragment paira que você possa transmitir essa atividade como a Interface que você definiu e fazer chamadas de function. Paira fazer isso, coloque a interface em seu fragment como esse (Você também pode fazer a interface seu próprio file se quiser compairtilhair a mesma interface entre muitos fragments):

     public interface DataPullingInterface { public String getData(); } 

    Em seguida, implemente a interface em sua atividade como esta:

     public class MyActivity extends Activity implements DataPullingInterface { // Your activity code here public String getData() { return "This is my data" } } } public class MyActivity extends Activity implements DataPullingInterface { // Your activity code here public String getData() { return "This is my data" } } 

    Finalmente, no seu onAttach(Activity activity) no CurrentFragment, transmita a atividade que você recebe como a interface que você criou paira que você possa chamair essas funções.

     private DataPullingInterface mHostInterface; public void onAttach(Activity activity) { super.onAttach(activity); if(D) Log.d(TAG, "onAttach"); try { mHostInterface = (DataPullingInterface) activity; } catch(ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement DataPullingInterface"); } String myData = mHostInterface.getData(); } } private DataPullingInterface mHostInterface; public void onAttach(Activity activity) { super.onAttach(activity); if(D) Log.d(TAG, "onAttach"); try { mHostInterface = (DataPullingInterface) activity; } catch(ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement DataPullingInterface"); } String myData = mHostInterface.getData(); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.