GetSupportFragmentManager no compila en DialogFragment
¿Cómo puedo mostrar esto:
public class TagsDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.tags_dialog, null)); builder.setMessage("This is a message").setTitle("TAGS"); return builder.create(); } }
Desde dentro de mi Fragment
dentro de un ViewPager
:
- La tecla de retroceso para hacer estallar el fragmento muestra los fragmentos superpuestos
- Cómo deshabilitar el cajón en fragmento y volver al fragmento correcto
- Manejar el botón de retroceso en un solo fragmento
- Agregar fragmento a la actividad de NavigationDrawer
- ¿Cómo funciona `onViewStateRestored` de Fragments?
public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... ImageView btnTags = (ImageView)view.findViewById(R.id.btnTags); btnTags.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DialogFragment dlg = new TagsDialog(); //this line doesn't compile dlg.show(getSupportFragmentManager(), "tags"); } }); } }
He intentado por edades para conseguir esto para trabajar, pero getSupportFragmentManager
nunca se resuelve … alguna idea?
EDITAR:
Siento que todo esto es causado por el apoyo FragmentManager vs el android.app.FragmentManager, sin embargo no sé cómo resolver esto, ya que estoy usando el ViewPager de la biblioteca de soporte …
GetSupportFragmentManager / y todos los métodos relacionados de getFragManager como parent y child uno siempre devuelven al Manager de la lib de soporte, cuando el método show quiere el core one.
Las importaciones son:
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; FragmentManager fm = getActivity().getSupportFragmentManager(); // returns from support lib DialogFragment dlg = new TagsDialog(); dlg.show(fm, "tags"); // wants core...
Si sólo uso núcleo, entonces getSupportFragmentManager()
no existe en getActivity()
…
- Agregar un fragmento con el método add () no oculta fragmentos anteriores
- Cómo abrir diferentes actividades al hacer clic en los elementos del cajón de navegación?
- FragmentManager.beginTransaction () no se puede aplicar a (int, android.app.fragment)
- Cajón de navegación: crea una nueva instancia de fragmento cada vez o simplemente "actualiza" los datos.
- ¿Por qué fragmento no muestra el diseño en mi cajón de navegación
- Cajón de navegación, problemas de concepto
- Pase la clase personalizada al fragmento
- Android Volver al primer fragmento en navigationdrawer
Debe revisar sus importaciones. No se puede usar una mezcla de Fragment & FragmentManager de la biblioteca de soporte y de apis de núcleo de android.
Si utiliza soporte, utilice todo desde soporte (del paquete android.support.v4.app
). Si no, utilice todo desde el paquete de api del núcleo ( android.app
).
Esto es lo que hago en mi Fragmento que está en ViewPager. El código para mostrar un DialogFragment es el mismo donde nunca lo haría aunque.
FragmentManager fm = getActivity().getSupportFragmentManager(); ConfirmDeleteDialog dialog = new ConfirmDeleteDialog(); dialog.setTargetFragment(RecipeFragment.this, REQUEST_CONFIRM_RC); Bundle b = new Bundle(); b.putString(ConfirmDeleteDialog.EXTRA_CONFIRM_DIALOG_TYPE, ConfirmDeleteDialog.CONFIRM_DIALOG_TYPE.COMMIT.name()); // enum determines what to display dialog.setArguments(b); dialog.show(fm, "confirm delete");
EDITAR.
Creo que puede estar perdiendo el * getActivity (). * GetSupportFragmentManager ()
- Cómo debo abrir y cerrar mi base de datos correctamente
- Cómo mostrar un marcador en un geo: -url en Android Maps