Android: Ajout d'un fragment d'une activité

Je suis assez nouvelle pour Android, donc cela peut avoir une réponse évidente, mais je n'arrive pas à le trouver.

Je suis en train d'écrire une version d'une application calculatrice. Je veux faire en sorte que lorsqu'un utilisateur clique sur l'un des boutons, cela commence un fragment (avec plus de boutons qu'ils peuvent ensuite utiliser pour plus d'entrée).

Le fragment de code est comme suit:

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class VariableMenu extends Fragment {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);}

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

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

         return inflater.inflate(R.layout.fragment, container, false);
}

}

avec une mise en page XML comme suit:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<Button
        android:id="@+id/Bx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="X" 
        android:onClick="onButtonClicked"/>
    <Button
        android:id="@+id/By"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/Bx"
        android:layout_alignTop="@id/Bx"
        android:text="Y" 
        android:onClick="onButtonClicked"/>
    <Button
        android:id="@+id/Bz"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/By"
        android:layout_alignTop="@id/By"
        android:text="Z" 
        android:onClick="onButtonClicked"/>

</RelativeLayout>

(Je sais que je ne devrais pas être à l'aide de chaînes codées en dur, mais je vais corriger ça dès que j'arrive à la chose en cours d'exécution)

J'ai essayé de l'avoir ajouté à l'aide d'un fragmenttransaction avec le onTouch méthode du bouton d'activation, comme suit:

public void onFragmentActivated(View v) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        VariableMenu fragment = new VariableMenu();
        fragmentTransaction.add(R.layout.main, fragment);
        fragmentTransaction.commit();
    }

mais qui a donné une erreur disant qu'il n'y avait "Pas de vue pour id:...(principale) de fragment VariableMenu."

Alors j'ai vue dans le fichier XML principal:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

(Irrelevant things)

    <fragment
        android:id="@+id/Fragment"
        android:name="calculator.app.VariableMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/B1"/>

(Irrelevant things)

</RelativeLayout>

Mais cela a entraîné dans le fragment être là dès que l'activité a été créé (et setContentView(R. layout.principal); ran).

Est-il un moyen simple pour ajouter par programme et retirer un fragment avec une INTERFACE utilisateur à une activité?

OriginalL'auteur Spencer | 2012-05-02