conversion de l'activité en fragment
C'est un code simple pour jouer un son sur off button
, ce code a d'abord été écrit en activité mais maintenant je veux le changer en Fragments.
erreurs
1) la méthode setContentView(int)
n'est pas défini pour le type Rajathmusic.
2) La méthode create(Context, int)
dans le type MediaPlayer n'est pas applicable pour les arguments (Rajathmusic, int).
3)La méthode findViewById(int)
n'est pas défini pour le type Rajathmusic.
je suis juste commençant avec des développement android, toute aide serait appréciée!
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.");
}}
3 réponses
Fragment
a une méthode appeléeonCreateView(LayoutInflater, ViewGroup, Bundle)
. Outrepassez-le, gonflez en utilisant le layout et retournez la vue.- depuis la méthode create attend un
Context
, passez-le à l'aide degetActivity()
findViewById(int)
peut êtregetView().findViewById(R.id.button3)
Voici un exemple de code:
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.");
}
}
en savoir plus sur Fragment
cycle de vie ici pour savoir pourquoi j'ai mis le code dans onActivityCreated
et non onCreate
dans fragment onCreate méthode est généralement écrit comme-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
Et
final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.rajath);
Button play_button = (Button) view.findViewById(R.id.button3);
si vous voulez en savoir plus sur les fragments. consultez ce lien.
utilisez ce code dans la méthode overriden OnActivityCreated(...)
et au lieu de this
utiliser getActivity()
, puisque le nouveau fragment n'est plus actif.