web-dev-qa-db-fra.com

findViewById dans le fragment

Est-il possible de trouver une vue par ID dans le cadre d'un fragment? J'utilise une série de fragments pour rendre une liste spécialisée. Les fragments sont chargés depuis une présentation, leurs widgets ont donc tous le même identifiant.

Je suppose que je peux trouver un moyen de donner à chaque widget un identifiant personnalisé pendant (ou juste après) la création. Cependant, ce serait beaucoup plus agréable si je pouvais en quelque sorte limiter findViewById à la portée du fragment.

24
Peri Hartman
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;
}
57
chris-tulip

De l'intérieur du fragment:

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

De l'activité suivante:

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

ou

getFragmentManager().findFragmentById(R.id.your_fragment).getView().findViewById(R.id.your_view);
22
Michael Celey

Vous pouvez le faire par getView().findViewById()

6
500865

Oui, il existe un moyen, vous pouvez le trouver via rootView. Recherchez d’abord le rootView de votre fragment rootView=getView();, puis utilisez rootView.findViewById(...);.

1
slezadav
  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);
    }
0
sms247