本次了解到比较重要的就是应用程序的完全退出
问题:主窗口A调用了子窗口B,在窗口B中要退出应用程序,使用直接使用finish(),只会返回到窗口A中,折腾了好久,google后才解决,需要在窗口A调用窗口B的代码中加入
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);然后在窗口B中用finish();直接就可以退出应用程序。
实现弹出menu菜单
public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 0, 0, R.string.version); menu.add(0, 1, 1, R.string.about); menu.add(0, 2, 2, R.string.exit); return super.onCreateOptionsMenu(menu); }
@Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub super.onOptionsItemSelected(item); switch (item.getItemId()) { case 0: versionPage(); break; default: break; } return true; }
private void versionPage() { new AlertDialog.Builder(this).setTitle(R.string.version).setMessage( R.string.version).setNegativeButton(R.string.confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); }
获取按钮事件
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) { exitSystem(); return true; } else { return super.onKeyDown(keyCode, event); } }
public void exitSystem() { new AlertDialog.Builder(this).setTitle(R.string.exitMsg).setMessage( R.string.exitMag2).setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub finish(); } }).setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); }
@Override protected void onDestroy() { // TODO Auto-generated method stub android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); }