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.");
}}
15
demandé sur Ab_ 2014-01-18 18:57:25

3 réponses

  1. Fragment a une méthode appelée onCreateView(LayoutInflater, ViewGroup, Bundle). Outrepassez-le, gonflez en utilisant le layout et retournez la vue.
  2. depuis la méthode create attend un Context, passez-le à l'aide de getActivity()
  3. findViewById(int) peut être getView().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

43
répondu Ganesh Bhambarkar 2014-01-18 15:29:43

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.

1
répondu Kanwaljit Singh 2014-01-18 15:32:38

utilisez ce code dans la méthode overriden OnActivityCreated(...) et au lieu de this utiliser getActivity(), puisque le nouveau fragment n'est plus actif.

1
répondu Draško 2014-01-18 15:43:29