ejemplos - gridlayout android
Programación agregada de fragmentos a framelayout en Android (1)
Estoy tratando de construir una UI combinando elementos tanto estáticos como dinámicos. Para esto, he dividido mi actividad en fragmentos: toda la navegación de la aplicación se realiza reemplazando fragmentos en lugar de navegar entre actividades.
En mi diseño de actividad principal, estoy usando un FrameLayout :
<FrameLayout
android:id="@+id/mainframe"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_below="@id/topsection"
android:layout_above="@id/lowersection" />
Tengo un fragmento declarado como tal:
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragmentlayout, container, false);
}
}
Luego, en mi actividad principal (que extiende FragmentActivity y usa la importación android.support.v4.app.FragmentActivity , estoy intentando cargar este fragmento en el diseño del marco.
MyFragment myf = new MyFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mainframe, myf);
transaction.commit();
He seguido esto de muchos otros ejemplos, sin embargo, estoy recibiendo un error del compilador en el comando transaction.add() , que nadie más parece haber encontrado.
El error que estoy recibiendo es: The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment) .
¿Por qué es esto? La clase MyFragment extiende Fragment así que hubiera pensado que esto funcionaría. ¿Qué estoy haciendo mal?
Edición: Las importaciones para mi actividad principal son:
import org.joda.time.DateTime;
import android.app.FragmentTransaction;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
Revisa tus importaciones. Use android.support.v4.app.FragmentTransaction lugar de android.app.FragmentTransaction .
Además, asegúrese de estar usando android.support.v4.app.Fragment y llamando a getSupportFragmentManager() . Es fácil pasar por alto estas llamadas / importaciones. Gracias a saiful103a con la sugerencia del FragmentManager.