2016-04-22 67 views
1

我有一個ImageView作爲按鈕。我想要它,如果我點擊它,播放聲音並切換到另一個活動。單憑它完美的作品,但我不能混合它們,它只能播放聲音或切換活動。 活動開關代碼:Android studio 1按鈕2事件

public void imagebutton (View v) { 
    Intent startNewActivity = new Intent(this, NewActivity.class); 
    startActivity(startNewActivity); 
} 

和聲音代碼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 

    ImageView click = (ImageView) findViewById(R.id.imagebutton); 

    click.setOnClickListener(new View.OnClickListener() 

          { 
           @Override 
           public void onClick (View v){ 
            sound.start(); 
           } 
          } 
    ); 

感謝。

回答

1

嘗試這樣,

click.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick (View v){ 
      sound.start(); 
      Intent startNewActivity = new Intent(MainActivity.this, NewActivity.class); 
      startActivity(startNewActivity); 
     } 
    } 
); 

還要檢查.NewActivity在你的manifest.xml

+0

謝謝! 「新的Intent(this,NewActivity.class)」不起作用,但用「新的Intent(MainActivity.this,NewActivity.class);」它完美地工作。 – 6Geri6

+0

您也可以使用上下文而不是MainActivity.this –

0

把你的代碼開始練習下sound.start();

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 

    ImageView click = (ImageView) findViewById(R.id.imagebutton); 

    click.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick (View v){ 
      sound.start(); 
      Intent startNewActivity = new Intent(this, NewActivity.class); 
      startActivity(startNewActivity); 
     } 
    } 
); 
+0

謝謝! 「新的Intent(this,NewActivity.class)」不起作用,但用「新的Intent(MainActivity.this,NewActivity.class);」它完美地工作。 – 6Geri6

0

您可以實現的AsyncTask重現你的聲音之前,開始你的新活動。

public class BackgroundSound extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 
     MediaPlayer player = MediaPlayer.create(this, R.raw.clicksound); 
     player.setLooping(true); // Set looping if you want 
     player.setVolume(100,100); // Set Volume if you want 
     player.start(); 
     return null; 
    } 
} 

並使用像這樣:BackgroundSound.execute();在開始新活動之前。

0

可以使用setOnCompletionListener以確保聲音已經結束,然後開始新的活動:

final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 
     sound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       Intent startNewActivity = new Intent(this, NewActivity.class); 
       startActivity(startNewActivity); 
      } 
     }); 
     ImageView click = (ImageView) findViewById(R.id.imagebutton); 
     click.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick (View v){ 
       sound.start(); 
      } 
     }