[英]Override back button in android
我必須播放一個mp3文件,當點擊設備上的后退按鈕時,歌曲應自動停止。 所以我嘗試了以下給定的方法。 但它沒有用。
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.audioplaying);
play=(ImageView)findViewById(R.id.play);
stop=(ImageView)findViewById(R.id.stop);
songid=(TextView)findViewById(R.id.songid);
status=(TextView)findViewById(R.id.status);
String s=Songs.song;
status.setText("Please Wait....!");
mp=new MediaPlayer();
try{
mp.setDataSource(s);
mp.prepare();
}
catch(Exception ex){
Log.e("Exception",ex.getMessage());
}
Log.e("Status","Song is going to Start");
mp.start();
start=true;
Log.e("Status","Song was Started");
status.setText("Playing...!");
songid.setText(s);
play.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
audioStreamer.stop();
audioStreamer.getMediaPlayer().stop();
if(start)
{
mp.stop();
start=false;
}
else{
Intent setIntent = new Intent(AudioPlay1.this,Songs.class);
startActivity(setIntent);
finish();
}
Intent setIntent = new Intent(AudioPlay1.this,Songs.class);
startActivity(setIntent);
finish();
return;
}
@Override
public void onClick(View v) {
if(v.equals(play)){
try{
mp.prepare();
}
catch(Exception ex){Log.e("Exception in onclick",ex.toString());}
mp.start();
start=true;
Log.e("Status","Song was Started again");
status.setText("Playing...!");
}
if(v.equals(stop)){
mp.stop();
start=false;
Log.e("Status","Song was stopped");
status.setText("Song was Stopped");
}
}
歌曲沒有停止,前一頁無法顯示。 請告訴我解決方案。
最好的祝福。
先感謝您。
我不知道這是不是你的問題,但是當你調用onBackPressed();
在你的onkeydown中,你沒有返回,所以也調用了parent.onkeydown
,而'正常'后面只是被'執行'。
在那里插入一個return語句,這樣你就不會從父類中執行正常的功能。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
用於處理所有關鍵用途
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) { //Back key pressed
//Things to Do
return true;
}
return super.onKeyDown(keyCode, event);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.