2017-08-31 6 views
-7

Bonjour, J'ai un fragment pour une ViewPager:Impossible de résoudre la méthode 'findViewById (int)' dans Fragment de ViewPager

package my.test.myapplication; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 

public class Fragment1 extends Fragment { 

    private Button btn; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // point A 
     return inflater.inflate(R.layout.frag1,container,false); 
    } 
} 

Quand j'ajouter ce au point A, il vient un message d'erreur:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // point A 
    btn = (Button) findViewById(R.id.button); 
    return inflater.inflate(R.layout.frag1,container,false); 
} 

Le message d'erreur:

Cannot resolve method 'findViewById(int)' 

Que puis-je faire?

+1

dans le fragment, il est gonflé une mise en page d'où il peut être trouvé par vue gonflé afin d'utiliser view.findViewById() où view = inflater.inflate (R.layout.frag1, contenant, false); –

+0

Ne pas utiliser Fragment si vous êtes débutant (je suppose que vous êtes). –

+0

https://stackoverflow.com/a/6496013 –

Répondre

1

Si vous souhaitez accéder à une vue, vous avez un objet de vue pour y accéder.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.frag1,container,false); 
     btn = (Button)view.findViewById(R.id.button); 

     return view; 
    } 
0

Essayez ci-dessous code OnViewCreated() méthode:

btn = (Button) view.findViewById(R.id.button); 
1

essayer si vous voulez lier vos contrôles dans fragment que votre doivent d'abord obtenir la votre mise en page pour un view utilisant LayoutInflater qu'avec l'aide de cette view vous pouvez lier vos tous les contrôles comme celui-ci

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.frag1,container,false); 
     btn = (Button) rootView.findViewById(R.id.button); 
     return rootView ; 
    } 
+1

Je vous avais sauvé c: –

+0

et peut savoir la raison pour les votes vers le bas –

+0

Le seul problème que je vois est un "=" –

0

Essayez que

view.findViewById(R.id.expandable); 
0
findViewById(int) 

est une méthode de classe View.

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //and use view.findViewById(int) 
} 

Où view est votre fichier XML, que vous avez gonflé dans onCreateView().

0

Vous pouvez essayer comme ceci:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View rootView = inflater.inflate(R.layout.frag1, container, false); 
    btn = (Button)rootView.findViewById(R.id.button); 
    return rootView ; 
} 
0

Un Fragment n'est pas une sous-classe de Activity. Vous devez appeler findViewById(R.id.*id*); sur un objet Activity.

Voir API.