2017-10-21 31 views
0

Mon MainActivity contient des boutons qui permettent de passer à différents fragments. A l'intérieur de chaque fragment il y a aussi des boutons. Le bouton d'activité onClickListener fonctionne correctement avant d'implémenter le bouton onClickListener dans les fragments. Je me demande si ce n'est pas pris en charge par Android ou mon code n'est pas correct. Tout pointeur est apprécié. Je vous remercie.Est-il possible d'implémenter des boutons séparés onclickListener dans Activity et Fragment?

Code Fragment:

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

    super.onCreate(savedInstanceState); 
    v = inflater.inflate(fragment1, container, false); 

    b2=(Button)v.findViewById(R.id.button2); 
    b2.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v){ 
      button2Clicked(v); 
     } 
    }); 
    return inflater.inflate(R.layout.fragment1, container, false); 
} 
public void button2Clicked(View view){ 
    //do something 
} 

Code d'activité:

public class MainActivity extends FragmentActivity { 

private Button btnHealth; 
private Button btnSetting; 
private Button btnSleep; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Init component 
    btnHealth = (Button) findViewById(R.id.btnHealth); 
    btnSleep = (Button) findViewById(R.id.btnSleep); 
    btnSetting = (Button) findViewById(R.id.btnSetting); 

    replaceFragment(1); 

    btnHealth.setOnClickListener(new AdapterView.OnClickListener(){ 
     @Override 
     //On click function 
     public void onClick(View view) { 
      replaceFragment(0); 
     } 
    }); 

    btnSleep.setOnClickListener(new AdapterView.OnClickListener(){ 
     @Override 
     //On click function 
     public void onClick(View view) { 
      replaceFragment(1); 
     } 
    }); 

    btnSetting.setOnClickListener(new AdapterView.OnClickListener(){ 
     @Override 
     //On click function 
     public void onClick(View view) { 
      replaceFragment(2); 
     } 
    }); 

} 


//Create method replace fragment 

private void replaceFragment(int pos) { 
    Fragment fragment = null; 
    switch (pos) { 
     case 0: 
      fragment = new Fragment1(); 
      break; 
     case 1: 
      fragment = new Fragment2(); 
      break; 
     case 2: 
      fragment = new Fragment3(); 
      break; 
     default: 
      fragment = new Fragment2(); 
      break; 
    } 

    if(null!=fragment) { 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     transaction.replace(R.id.main_content, fragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
    } 
} 


} 
+0

veuillez indiquer pourquoi. – Maggie

+0

pourquoi renvoyez-vous 'inflater.inflate (R.layout.fragment1, container, false);' pas que 'View v'? –

+0

Ne pas définir un autre écouteur dans le fragment, il suffit d'appeler fragment button2Clicked() de l'activité lorsque le bouton est cliqué –

Répondre