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
Vous devez vous connecter pour publier un commentaire.
Le problème ici est que le fragment a besoin d'un conteneur en vue d'id à résider à l'intérieur. Donner un schéma de l'id de la raison dans l'erreur que vous avez vu.
Vous pouvez ajouter le fragment par rapport à votre disposition, mais pour le faire correctement, vous devez l'affecter approprié paramètres de mise en page de sorte qu'il peut être placé. Il serait plus facile de créer un FrameLayout à l'intérieur de la relative mise en page qui s'enroule son contenu, puis ajouter le fragment.
Puis
Merci beaucoup, cela a parfaitement fonctionné. Je ne pense pas que FragmentActivity travaille dans ce cas, mais je vais garder cette option à l'esprit pour l'avenir.
OriginalL'auteur dagalpin
utilisation facile code dans votre activité
OriginalL'auteur