我正在制作游戏,我有一个选项页面可以打开或关闭音乐.我想覆盖后退按钮,以便它返回到主页,你会明白为什么当你看到我的代码时: 
  
  
 
public class OptionsActivity extends Activity {
private boolean isMyServiceRunning(String serviceCanonicalClassName) {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (serviceCanonicalClassName.equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
Intent i; // Handles MyMusicService.java
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);
    final TextView tSound = (TextView) findViewById(R.id.textView2);
    final Button saveBtn = (Button) findViewById(R.id.optSaveBtn);
    final Button tblBtn = (Button) findViewById(R.id.tableBtn);
    i=new Intent(this,MyMusicService.class);
    final ToggleButton soundOption = (ToggleButton) findViewById(R.id.soundPref);
    boolean musicPlays = isMyServiceRunning(MyMusicService.class.getCanonicalName());
    soundOption.setChecked(musicPlays); 
    if(musicPlays==true){
        tSound.setText("On");
    }
    if(musicPlays==false) { 
        tSound.setText("Off");
    }
    soundOption.setonClickListener(new View.OnClickListener() {
        public void onClick(View v) {   
            // Perform action on clicks to control sound being on and off.   
            if(soundOption.isChecked()) {  
                Toast.makeText(OptionsActivity.this,"Music on.",Toast.LENGTH_SHORT).show(); 
                startService(i);
                Intent i = new Intent(OptionsActivity.this,OptionsActivity.class);
                startActivity(i);
            } 
            else {  
                if(stopService(i)==true){
                    soundOption.setChecked(false);
                    stopService(i);
                    Toast.makeText(OptionsActivity.this,"Music off.",Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(OptionsActivity.this,OptionsActivity.class);
                    startActivity(i);
                }  
            }
        }
    });
    tblBtn.setonClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent tblView = new Intent(OptionsActivity.this,sqlView.class);
            startActivity(tblView);
        }
    });
    saveBtn.setonClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            switch (v.getId()){ 
            case R.id.optSaveBtn: //Determine what will happen when the user presses the "Submit button".
                boolean optionsWork = true;
                try{
                    String sound = tSound.getText().toString();
                    optionsDB entry = new optionsDB(OptionsActivity.this); //Creating a new instance of MasterMind game
                    entry.open();
                    entry.createOptionEntry(sound); //Passing both strings
                    entry.close();
                }catch (Exception e){ //Creating an error message if for some reason the app cannot transfer data to the Database.
                    Toast.makeText(OptionsActivity.this,"Error",Toast.LENGTH_SHORT).show();
                }
                finally { //Creating an AlertDialog Box when the user presses the Submit button.
                    if (optionsWork){
                        Toast.makeText(OptionsActivity.this,"Settings Saved",Toast.LENGTH_SHORT).show();
                    }
                }
                break;
            }
        }
    });
} 
 }
任何帮助都会非常棒,谢谢.
更新:添加此,仍然不起作用:
@Override
public boolean onKeyDown(int keyCode,KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        // do something on back.
        return true;
    }
    Intent i = new Intent(OptionsActivity.this,MainActivity.class);
    startActivity(i);
    return super.onKeyDown(keyCode,event);
}
解决方法
 覆盖Activity的onKeyDown(),这里你可以处理各种键或者也可以覆盖onBackPresses() 
  
  
 
        @Override
public boolean onKeyDown(int keyCode,KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        // do something on back.
        return true;
    }
    return super.onKeyDown(keyCode,event);
}