El fragmento original no irá al final de la pila, permanece visible

Tengo algunos problemas con FragmentTransactions. He invocado con éxito un fragmento del método onClick pero el original mainFragment no "desaparecerá" ni irá al final de la pila. He seguido el tutorial de desarrollo de Android en Fragment Transcation. Creo que el problema está en mi Survey.java clase o mi Details.java clase. Cualquier ayuda es apreciada.

Actualización: (Fotos añadidas a continuación)
Antes de: http://imm.io/q9vt
Después de hacer clic en "Botón de encuesta": http://imm.io/q9wf

Ver código para todo a continuación:

Código de Principal.java

package mycompany.nst;

import mycompany.nst.R;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;

public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    Fragment _surveyFrag = new Survey();

    public void focusFragment(Fragment mainFragment) {
        FragmentManager FragMgr = getFragmentManager();
        FragmentTransaction transaction = FragMgr.beginTransaction();
        try {
            transaction.replace(R.id.mainFragment, _surveyFrag);
            transaction.addToBackStack(null);
            transaction.commit();

        } catch(Exception e){};
            transaction = null;
            FragMgr = null;     
    }

    public void survey_onClick(View view) {
        Log.i("onClick", "SURVEY BEGIN");
        focusFragment(_surveyFrag);
    }
}

Código de principal.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/hsdarker"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <fragment
        android:id="@+id/listFragment"
        android:name="mycompany.nst.ListFragment"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        class="mycompany.nst.ListFragment" >
        <!-- Preview: layout=@layout/list -->

    </fragment>

    <fragment
        android:id="@+id/mainFragment"
        android:name="mycompany.nst.Details"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/listFragment"
        class="mycompany.nst.Details" >
        <!-- Preview: layout=@layout/details -->

    </fragment>


</RelativeLayout>

Código de Detalles.java <-- El fragmento original

package mycompany.nst;

import mycompany.nst.R;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

    public class Details extends Fragment {
        /** Called when the activity is first created. */
        @Override
        public View onCreateView(LayoutInflater LIdetails, ViewGroup VGdetails, Bundle SaveInstancedState) {
            Log.i("DetailsFragment", "onCreateView");
            // Inflate the layout for this fragment
            return LIdetails.inflate(R.layout.details, VGdetails, false);
        }  
    }

Código de Detalles.java <-- El nuevo fragmento

package mycompany.nst;

import mycompany.nst.R;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

    public class Survey extends Fragment {
        /** Called when the activity is first created. */ 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            Log.i("SurveyFragment", "onCreateView");
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.survey, container, false);
        }
    }

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

No puede reemplazar ni eliminar un fragmento definido en XML; se convierte en una parte no eliminable del diseño. Sin embargo, si define los fragmentos en el código, puede reemplazarlos y eliminarlos a voluntad.

contestado el 22 de mayo de 12 a las 18:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.