Gonfler une mise en page avec ImageButton à l'intérieur de Fragment par programmation

Je suis nouveau sur le développement android, et j'étais en train de créer une application utilisant tabhost et un TabActivity pour basculer entre les différentes activités. Cette application fonctionnait bien, mais je viens de découvrir que TabActivity sont obsolètes et que je devrais utiliser fragment de la place.

Donc, j'ai suivi ce tutoriel expliquant comment faire :
http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/

Plus de, il fonctionne très bien, mais il est de mon problème, certains de mes anciennes activités qui sont maintenant des fragments ont été gonflage ImageButton l'utilisation de ce genre de méthodes :

private void displayLevelButtons() {
     LayoutInflater lf = getLayoutInflater();            
        btns = lf.inflate(R.layout.mallmapactivity_level_buttons, null, false);

        mBtnLevelDown = (ImageButton) btns.findViewById(R.id.btn_level_down);
        mBtnLevelUp = (ImageButton) btns.findViewById(R.id.btn_level_up);

        mBtnLevelDown.setOnClickListener(new OnClickListener() {
          @Override
           public void onClick(View view) {                  
              levelDown();
              updateLevelButtons();
           }
       });
       mBtnLevelUp.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View view) {
              levelUp();
              updateLevelButtons();
           }
       });

       LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
       params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL | Gravity.RIGHT;            
       addContentView(btns,params);

    }

Afin d'être en mesure de compiler cette méthode à l'intérieur d'un fragment, j'ai changé:

LayoutInflater lf = getLayoutInflater(); 

à

LayoutInflater lf = getActivity().getLayoutInflater();

et

addContentView(btns,params);

à

getActivity().addContentView(btns,params);

Mais en utilisant ma méthode displayLevelButtons() comme cela mes boutons s'affiche dans le coin inférieur droit de mon point de vue général, pas en bas à droite de mon fragment.

J'ai aussi essayé de spécifier une racine lors du gonflage ma mise en page avec des boutons image, mon tout fragment de la classe comme ceci :

public class MyFragment extends Fragment {
private View btns;        
private ImageButton mBtnLevelUp;
private ImageButton mBtnLevelDown; 
private ViewGroup myViewGroup;
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
myViewGroup = container;
v = inflater.inflate(R.layout.mallmaptile, container, false);           
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
//Do some stuff and then :
displayLevelButtons();        
}
private void displayLevelButtons() {
LayoutInflater lf = getActivity().getLayoutInflater();          
btns = lf.inflate(R.layout.mallmapactivity_level_buttons, myViewGroup, false);
mBtnLevelDown = (ImageButton) btns.findViewById(R.id.btn_level_down);
mBtnLevelUp = (ImageButton) btns.findViewById(R.id.btn_level_up);
mBtnLevelDown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {                     
levelDown();
updateLevelButtons();
}
});
mBtnLevelUp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
levelUp();
updateLevelButtons();
}
});
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL | Gravity.RIGHT;            
getActivity().addContentView(btns,params);
}

Faire mes boutons sont toujours afficher dans le fond de mon point de vue général pas dans le fond de mon fragment, et si j'essaie de modifier le attachToRoot valeur booléenne true :

btns = lf.inflate(R.layout.mallmapactivity_level_buttons, myViewGroup, true);

J'obtiens l'erreur : java.lang.IllegalStateException: L'enfant spécifié dispose déjà d'un parent. Vous devez appeler removeView() sur le parent de l'enfant en premier.

J'en suis sûr, j'ai raté quelque chose d'important, mais je ne sais pas ce que. Toute suggestion serait vraiment apprécié.

Merci d'avance,

OriginalL'auteur Digoun | 2012-04-20