Utilizzando findViewById all’interno di un Frammento di

Io sono la creazione di una nuova Scheda di interfaccia e per ogni scheda che mi hanno funzionalità come:

public class ClassViewFragment extends Fragment {
    ListView classListView = null;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.class_view, container, false);

        classListView = (ListView) findViewById(R.id.classList);

        return rootView;
    }
}

Ma io sono sempre cannot resolve method findViewById anche in un altro luogo io sono anche in grado di utilizzare runOnUiThread e ottenere Error:(88, 29) error: cannot find symbol method runOnUiThread(<anonymous Runnable>)

Capisco questi funzionano bene se la mia classe è stata estesa da Activity ma è una scheda frammento quindi come posso utilizzare questo funcitons?

InformationsquelleAutor Maven | 2015-01-20

 

7 Replies
  1. 6

    è necessario

    classListView = (ListView) rootView.findViewById(R.id.classList);

    che è il panorama che si sono interessati con

    per ottenere runOnUiThred è necessario fare getActivity().runOnUiThread

    • il rootView oggetto è solo accesbile in onCreateView e non in altre funzioni all’interno della classe?
    • corretto, se hai bisogno di altro basta tenere su di esso a livello globale. Si potrebbe anche basta tenere su la voce è necessario in particolare, invece di tutta la visione
  2. 6

    È necessario fare riferimento findViewById utilizzando la vista,

    public class ClassViewFragment extends Fragment {
        ListView classListView = null;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    
            View rootView = inflater.inflate(R.layout.class_view, container, false);
    
            classListView = (ListView) rootView .findViewById(R.id.classList);
    
            return rootView;
        }
    }

    Per runOnUiThread è possibile duplicato di Modifica di un Android di vista da un thread diverso

    utilizzare come,

    activity.runOnUiThread(new Runnable());
  3. 2

    Qui è una costa spiegazione di findViewById metodo;

    findViewById() metodo di lavoro con il relativo oggetto, che il layout principale è associato. Per esempio, In un’attività, quando si effettua una

    setContentView(activity_main);

    È pensare che la tua Activity recupera il proprio layout da activity_main. Così, quando si effettua un findViewById() in un’attività che in realtà significa this.findViewById(), dove this è il tuo Activity.

    Quindi nel tuo caso, il layout class_view è legato al rootView. Ma quando si scrivono solo findViewById, significa che this.findViewById. E this è l’ambito in cui ti trovi, che è il Fragment nel tuo caso. Tuttavia, non credo che un Frammento ha tale possibilità. Così si dovrebbe consultare il rootView per recuperare il vostro punto di vista.

    rootView.findViewById()
  4. 1

    Frammenti non hanno un findViewById() metodo come Attività, quindi, è necessario chiamare il metodo della radice vista del frammento. Prova a fare rootView.findViewById(R. id.classList), invece.

  5. 0
     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View v =  inflater.inflate(R.layout.fragment_content_mediaplayer, container, false);
            mSeekbar = (SeekBar) v.findViewById(R.id.seekBarMusic);
            return v;
  6. 0

    Utilizzare rootView.findViewById(R.id.classList) invece di findViewById(R.id.classList).

    Provare questo:

    public class ClassViewFragment extends Fragment {
        ListView classListView = null;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    
            View rootView = inflater.inflate(R.layout.class_view, container, false);
            classListView = (ListView) rootView.findViewById(R.id.classList);
    
            return rootView;
        }
    }
  7. 0

    findViewById deve essere eseguito all’interno onViewCreated() metodo

    ListView classListView = null;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    
        return inflater.inflate(R.layout.class_view, container, false);
    }
    
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        classListView = (ListView) view.findViewById(R.id.classList);
    }

    }`

Lascia un commento