2015-03-11 1 views
3

J'essaye d'implémenter un bouton dans un fragment afin d'utiliser le soundPool pour jouer un son avec un bouton. Pour le moment, le playSound1 arrive comme jamais utilisé et j'ai essayé d'implémenter la méthode onClick mais il arrive maintenant qu'il ne peut pas résoudre la méthode. Comment lier le soundPool à un bouton dans un fragment? c'est le fichier .javaImpossible de résoudre la méthode 'findViewById (int)' dans le fragment

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1); 
     clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1); 

     // TODO Auto-generated method stub 
     return inflater.inflate(R.layout.fragment_one_layout, container, false); 

     Button buttonA = (Button) findViewById(R.id.buttonA); 

     buttonA.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

      } 

      public void playSound1() 
      {Clubb1.play(clubb1Id,1,1,1,0,1);} 
     }); 
+0

Placez votre retour à la fin de 'OnCreateView()' – CAS

+0

En relation avec [findViewById in Fragment] (http://stackoverflow.com/questions/6495898/findviewbyid-in-fragment) – Fllo

Répondre

3

Changer votre méthode:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1); 
     clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1); 

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

     Button buttonA = (Button) rootView.findViewById(R.id.buttonA); 

     buttonA.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Clubb1.play(clubb1Id, 1, 1, 1, 0, 1); 
      } 

     }); 

     return veiw; 
    } 

Vous avez fait beaucoup d'erreurs ici. Donc, je ne suis pas sûr que mon approche vous aide assez) Écrivez votre résultat de programme dans le commentaire et nous essayerons plus.

2

Il y a plusieurs erreurs dans votre code.

  1. Vous revenez d'une manière de valeur au début, le code au-delà de votre déclaration de retour n'est pas exécutée

  2. Vous gonfler la vue, mais tous vos éléments internes par exemple, le bouton est en ce point de vue si vous devez trouver cette vue par id dans cette vue.

Je corrigea:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View root = inflater.inflate(R.layout.fragment_one_layout, container, false); 
     Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1); 
     clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1); 

     Button buttonA = (Button) root.findViewById(R.id.buttonA); 

     buttonA.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

      } 

      public void playSound1() 
      {Clubb1.play(clubb1Id,1,1,1,0,1);} 
     }); 

     return root; 
}