Hay alguna forma de encontrar una vista identificación, dentro del ámbito de un fragmento? Estoy usando una serie de fragmentos para representar una lista especializada. Los fragmentos se han cargado de un diseño, por lo que sus widgets, todos tienen el mismo id.

Supongo que puedo encontrar una manera de dar a cada widget un id personalizado durante (o después) de la creación. Sin embargo, sería mucho mejor si pudiera limitar de alguna manera el findViewById para el alcance de un fragmento.

InformationsquelleAutor Peri Hartman | 2012-09-21

5 Comentarios

  1. 57
    private View myFragmentView;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        myFragmentView = inflater.inflate(R.layout.myLayoutId, container, false);
        myView = myFragmentView.findViewById(R.id.myIdTag)
    
        return myFragmentView;
    }
    • MrFox, asegúrese de que usted tenga en cuenta que la vista debe ser inflado. Así, me gustaría llamar inflater.inflate(v, contenedor). Que, o usted podría hacer MCeley la primera sugerencia, pero asegúrese de que esto se hace en onActivityCreated por lo que la Vista ha sido inflado y tal. De lo contrario, si lo haces en onCreateView con ninguna perspectiva exagerada, obtendrá un puntero null.
    • Lo siento! Estoy totalmente perdido que desde que me acaba de sacar de algún código que he tenido y la inflar fue en el super de mi mal
    • Yo no puedo ver ninguna referencia a la variable v otros que en la instrucción return. Es este un error tipográfico, y si es así ¿qué variable debe ser?
    • este es un error tipográfico, v debe ser myFragmentView. Va a cambiar ahora
  2. 23

    Desde el interior del Fragmento:

    getView().findViewById(R.id.your_view);

    De la envolvente de la Actividad:

    getFragmentManager().findFragmentByTag("YourFragmentTag").getView().findViewById(R.id.your_view);

    o

    getFragmentManager().findFragmentById(R.id.your_fragment).getView().findViewById(R.id.your_view);
    • A veces getView() es null, entonces, ¿qué haría usted?
    • getView() es sólo null antes de onCreateView() es llamado por el fragmento. En ese punto no existe ninguna opinión para ser encontrado usando findViewById() porque no ha sido creado.
    • Si getView() es llamado después de que el Fragmento que se ha desprendido, ¿también devolver null? Yo sólo soy curioso en cuanto a cuando getView() la llamada de un Fragmento devuelve null.
    • Cuando un fragmento desprendido getView() también debe volver a null. getView() sólo devolverá un valor no nulo después de onCreateView y antes de onDestroyView. Usted puede ver el ciclo de vida completo aquí
  3. 1

    Sí, hay una manera, usted puede buscar a través de rootView. En primer lugar, encontrar el rootView de su fragmento rootView=getView(); y, a continuación, utilizar rootView.findViewById(...);

  4. 0
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootview=null;
    
                 rootview=inflater.inflate(R.layout.fragment_web_view, container, false);
               ListView lv = (ListView)rootview.findViewById(android.R.id.list);
    
    return rootview;
            //Inflate the layout for this fragment
            //return inflater.inflate(R.layout.fragment_web_view, container, false);
        }

Dejar respuesta

Please enter your comment!
Please enter your name here