2013-04-02 3 views
1

Я работаю над проектом, где мне нужно создать Button s, который при нажатии будет воспроизводить некоторые мелодии. Это код, я используюВоспроизведение звука в AVD

package com.entrainment.www; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

Button mButtonOne; 
Button mButtonTwo; 
MediaPlayer mp; 
MediaPlayer mp1; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mp=MediaPlayer.create(this, R.raw.tone_1); 
    mp1=MediaPlayer.create(this, R.raw.tone_2); 

    mButtonOne = (Button)findViewById(R.id.button1); 
    mButtonTwo = (Button)findViewById(R.id.button2); 
    mButtonOne.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      mp.start(); 
     } 
    }); 

    mButtonTwo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      mp1.start(); 
     } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Я получил AVD бежать, и все это хорошо, но когда я нажимаю на кнопку, ничего не происходит.

+0

Почему вы устанавливаете контент дважды ..? setContentView (R.layout.activity_main); – Pragnani

+0

Вы пробовали мой ответ ... Я исправил вашу проблему ..? – Pragnani

ответ

0

Потому что вы устанавливаете контент дважды.

setContentView(R.layout.activity_main); 

звонок раздует ваш макет.

Всякий раз, когда вы установите его во второй раз новая копия будет сделана, так

mButtonOne и mButtonTwo являются экземплярами первого inflatted макета, но ваш взгляд curret является вторым inflatted макета. Чтобы просто сказать, что кнопки, которые вы видите на экране, отличаются друг от друга, потому что они принадлежат ко второму макету. Таким образом, вы нажимаете кнопку, у которой нет каких-либо действий, установленных вами.

Так что удалите setContentView(R.layout.activity_main); второй раз.

+0

Я могу видеть это только один раз. Что вы имеете в виду, я имею его дважды? – user2235756

+0

Ничего. Понял. Я пытаюсь это сейчас :) – user2235756

+0

DUUUUUUUDEEEE /. Большое спасибо. Ты спасатель. Это работает :)) – user2235756

Смежные вопросы