Android :Добавление фрагмента в действие

Я новичок в Android, поэтому у этого может быть очевидный ответ, но я не могу его найти.

Я пишу версию приложения-калькулятора. Я хочу сделать так, чтобы когда пользователь нажимал на одну из кнопок, запускался фрагмент (с дополнительными кнопками, которые они затем могли использовать для ввода дополнительных данных ).

Фрагмент кода выглядит следующим образом:

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);
}

}

с разметкой XML следующим образом:

<?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>

(Я знаю, что мне не следует использовать жестко -закодированные строки, но я исправлю это, как только заработаю)

Я попытался добавить его, используя транзакцию фрагмента с методом onTouch кнопки активации, например :

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

, но это дало ошибку, говорящую о том, что для id :... (main )не найдено представление. для фрагмента VariableMenu."

Затем я сделал представление для него в основном файле XML:

<?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>

Но это привело к тому, что фрагмент появился сразу после создания активности (и setContentView (R.layout.main ); побежал ).

Есть ли простой способ программно добавить и удалить фрагмент с пользовательским интерфейсом в активности?

7
задан Spencer 2 May 2012 в 18:54
поделиться