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

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

  1. Fragment tiene un método llamado onCreateView(LayoutInflater, ViewGroup, Bundle) . Anularlo, inflar con el diseño y devolver la vista.
  2. Dado que el método create espera un Context , pasa usando getActivity()
  3. findViewById(int) se puede llamar getView().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.

  • Viewpager no aparece cuando se utiliza CollapsingToolbarLayout
  • Fragmento superpuesto
  • FragmentMap + ActionBar Tab
  • Cómo manejar onBack Press en Fragmento Android
  • Fragmento de transacciones, barra de acción y backstack
  • ¿Cómo implementar onBackPressed () & intenciones en el fragmento?
  • Tirar para actualizar y loadmore listview como facebook
  • Animación de fragmentos y la pila trasera
  • Cómo hacer que el segundo fragmento se solape en el primer fragmento mientras que la transición del fragmento
  • Memoria que no se libera después de que el fragmento se elimina
  • Fragmento de bus de eventos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.