我正在制作游戏,我有一个选项页面可以打开或关闭音乐.我想覆盖后退按钮,以便它返回到主页,你会明白为什么当你看到我的代码时:
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); }