Convertir la actividad en fragmento
Este es un código simple para reproducir un sonido al hacer clic en un button
, este código se escribió inicialmente en Actividad pero ahora quiero cambiarlo a Fragmentos.
Errores
- Menú diferente para diferentes fragmentos
- Problemas de memoria en fragmentos que muestran imágenes
- IsValidFragment Android API 19
- Android: ¿Qué tiene de malo mi animación de la transición de fragmentos?
- Enviar paquete con transacción de fragmentos
1) El método setContentView(int)
no está definido para el tipo Rajathmusic.
2) El método create(Context, int)
en el tipo MediaPlayer no es aplicable para los argumentos (Rajathmusic, int).
3) El método findViewById(int)
no está definido para el tipo Rajathmusic.
Estoy empezando con el desarrollo de Android, cualquier ayuda sería apreciada!
public class Rajathmusic extends Fragment { private static final String TAG = "MyActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG, "Initializing sounds..."); final MediaPlayer mp = MediaPlayer.create(this, R.raw.rajath); Button play_button = (Button)this.findViewById(R.id.button3); play_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.v(TAG, "Playing sound..."); mp.start(); } }); Log.v(TAG, "Sounds initialized."); }}
- La animación de FragmentTransaction se desliza en la parte superior
- Problema de devolución de llamada de diálogo a pantalla completa de Android
- SwipeRefreshLayout Got Action_Move congela la vista
- Android: Cómo enviar datos del fragmento padre al fragmento secundario
- Cómo escribir una aplicación multi-panel de Android con navegación muy profunda
- Los fragmentos de ViewPager desaparecen al cambiar la rotación de la pantalla
- Android MapFragment Runtime Error - No se pudo encontrar la clase 'maps.jk'
- Comprobación doble si el patrón de soporte de fragmento + vista se implementa correctamente
-
Fragment
tiene un método llamadoonCreateView(LayoutInflater, ViewGroup, Bundle)
. Anularlo, inflar con el diseño y devolver la vista. - Dado que el método create espera un
Context
, pasa usandogetActivity()
-
findViewById(int)
se puede llamargetView().findViewById(R.id.button3)
Aquí hay un ejemplo de código:
public class Rajathmusic extends Fragment { private static final String TAG = "MyActivity"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.activity_main, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { Log.v(TAG, "Initializing sounds..."); final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.rajath); View v = getView(); Button play_button = (Button) v.findViewById(R.id.button3); play_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.v(TAG, "Playing sound..."); mp.start(); } }); Log.v(TAG, "Sounds initialized."); } }
Más información sobre el ciclo de vida de Fragment
aquí para saber por qué he puesto el código en onActivityCreated
y no onCreate
En el fragmento onCreate el método se escribe generalmente como-
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
Y use-
final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.rajath); Button play_button = (Button) view.findViewById(R.id.button3);
Si desea leer más sobre fragmentos. Compruebe este enlace.
Utilice este código en el método overriden OnActivityCreated(...)
y en lugar de usar getActivity()
, ya que el nuevo fragmento ya no es actividad.
- Cómo configurar android TabLayout en la parte inferior de la pantalla?
- Separación entre filas en la disposición de la tabla