Fragmentos de acceso Ver desde fuera Método OnCreateView

Han buscado alrededor de esto, pero todo el mundo de ellos es para el método onCreateView () donde se puede acceder a la vista Fragmentos a través del inflador.

public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) { super.onCreateView(inflater, group, saved); View view = inflater.inflate(R.layout.photosfrag, group, false); 

Lo que quiero saber es cómo hacerlo dinámicamente. Por ejemplo, digamos que estoy usando una actividad para mostrar un fragmento y llamar a un método en el fragmento como:

 public void setTitleText(String title) { TextView nameView = (TextView)getView().findViewById(R.id.titleTxtView); nameView.setText(title); } 

Sólo porque el fragmento ya está creado y sería una forma de cambiarlo dinámicamente.

Cualquier ayuda sería grande. Puedo hacerlo todo mal.

EDITAR

Aquí está el registro del accidente

 06-25 17:31:37.343: D/AndroidRuntime(1009): Shutting down VM 06-25 17:31:37.353: W/dalvikvm(1009): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 06-25 17:31:37.383: E/AndroidRuntime(1009): FATAL EXCEPTION: main 06-25 17:31:37.383: E/AndroidRuntime(1009): java.lang.NullPointerException 06-25 17:31:37.383: E/AndroidRuntime(1009): at com.corecoders.stuart.MainActivity.onTrackSelected(MainActivity.java:81) 06-25 17:31:37.383: E/AndroidRuntime(1009): at com.corecoders.stuart.HistoryFragment.onListItemClick(HistoryFragment.java:51) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.app.ListFragment$2.onItemClick(ListFragment.java:160) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.widget.AbsListView.performItemClick(AbsListView.java:1058) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.widget.AbsListView$1.run(AbsListView.java:3168) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.os.Handler.handleCallback(Handler.java:605) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.os.Handler.dispatchMessage(Handler.java:92) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.os.Looper.loop(Looper.java:137) 06-25 17:31:37.383: E/AndroidRuntime(1009): at android.app.ActivityThread.main(ActivityThread.java:4424) 06-25 17:31:37.383: E/AndroidRuntime(1009): at java.lang.reflect.Method.invokeNative(Native Method) 06-25 17:31:37.383: E/AndroidRuntime(1009): at java.lang.reflect.Method.invoke(Method.java:511) 06-25 17:31:37.383: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 06-25 17:31:37.383: E/AndroidRuntime(1009): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 06-25 17:31:37.383: E/AndroidRuntime(1009): at dalvik.system.NativeStart.main(Native Method) 

La forma en que lo haces debería funcionar. El registro de bloqueo nos muestra que el NPE no está relacionado con la forma en que el fragmento actualiza sus widgets.

Haga esto en su lugar:

 //Define reference globally TextView nameView; public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved){ super.onCreateView(inflater, group, saved); View view = inflater.inflate(R.layout.photosfrag, group, false); //do this here! nameView = view.findViewByID(R.id.titleTxtView); ... } public void setTitle(String t){ nameView.setText(t); } 

La diferencia es que este enfoque no carga la carga de la referencia TextView sino que carga cuando la vista se infla en lugar de cuando es necesario.

Yo estaba teniendo un problema similar, resulta que estaba anulando el getItem(int) del Fragmento y devolver una nueva instancia de Fragmento cada vez, en su caso no sé si también lo están anulando, pero, debe comprobar HistoryFragment.onListItemClick para ver si está llamando al método getItem y devolver una nueva instancia de Fragment que no es la misma que la que está mostrando en la pantalla.

Si alguien está tratando de acceder a cualquier vista desde el fragmento de la clase de fragmento fuera de CreateView, entonces puede hacer que la vista de inflación declarada en el nivel de clase y vincularlo después de inflar declaración y utilizar esa referencia de vista para buscar la vista en cualquier parte de la clase Fragmento: por ejemplo. ……….

 public class FragmentA extends Fragment { //This will hold the inflated fragment layout private View view; public FragmentA() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragmenta, container, false); this.view= view;// link this 'view' to our 'view' which we declared in class setTextViewNow(); return view; } private void setTextViewNow() { //use 'view' to find the id of textview using findviewById(); TextView myView = (TextView)view.findViewById(R.id.textViewMyView); myView.setText("THis is set from outside oncreateView"); } 

}

O use el método getActivity . Ejemplo de doc: View listView = getActivity().findViewById(R.id.list);

  • Los atributos de margen no funcionan dentro de un DialogFragment personalizado
  • Eliminación del fragmento haciendo clic / tocando fuera:
  • Problema extraño que refresca ViewPager con nuevo contenido:
  • Android: navegar hasta la actividad principal recrea la actividad principal
  • ¿Es necesario establecer los oyentes de la interfaz Fragment a null en detach?
  • Llamar aStart () de Fragmento antes para mostrar Viewpager, navigation_mode_tabs
  • Cómo utilizar fragmento en android 2.2?
  • Diferencia básica entre el método add () y replace () de Fragment
  • Activity and Fragment Lifecycle, ¿el fuego onResume dispara uno tras otro?
  • Fragmentos onResume de la pila trasera
  • Lógica para usar varias vistas web en TabLayout para manejar problemas de memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.