마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

메뉴버튼과 뒤로가기버튼 코딩

0 추천
메뉴버튼 누르면 스크린 밑에서 셋팅이라는 항목이 떠서 클릭하면 셋팅화면으로 이동했었거든요...

그러다. 추가로 뒤로가기 버튼으로 어플 종료하는 부분을 추가했는데...

메뉴버튼이 안먹어요...

메뉴버튼 소스만 있으면 먹는데.. 둘이 있으면 백버튼 소스만 먹네요.. 어디가 잘못된건지... ㅜㅜ

소스 첨부합니다...

 

// 메뉴버튼 클릭시 셋팅화면이동

 @Override
  public boolean onCreateOptionsMenu(Menu menu) {
   // Inflate the menu; this adds items to the action bar if it is present.
   getMenuInflater().inflate(R.menu.activity_main, menu);
   menu.add(0, 0, Menu.NONE, "Setting");
   return true;
  }
 
 
  public boolean onOptionsItemSelected(MenuItem item){
   switch(item.getItemId()){
   case 0:
  
    Intent intent = new Intent(MainActivity.this, SettingAcitivity.class);
       
       startActivity(intent);
  
   break;
   }
  return false;
  
  
  }
  
 
 // back 버튼을 클릭시 종료 할건지에 대해 묻는다
     public boolean onKeyDown(int keyCode, KeyEvent event){
      switch(keyCode){
      case KeyEvent.KEYCODE_BACK:
       String alertTitle = getResources().getString(R.string.app_name);
       String buttonMessage = getResources().getString(R.string.alert_msg_exit);
       String buttonYes = getResources().getString(R.string.button_yes);
       String buttonNo = getResources().getString(R.string.button_no);
         
       new AlertDialog.Builder(MainActivity.this)
       .setTitle(alertTitle)
       .setMessage(buttonMessage)
       .setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
       
        @Override
        public void onClick(DialogInterface dialog, int which) {
         // TODO Auto-generated method stub
         moveTaskToBack(true);
         finish();
         android.os.Process.killProcess(android.os.Process.myPid());
        }
       })
       .setNegativeButton(buttonNo, null)
       .show();
      }
     return true;
     }
민팔이 (180 포인트) 님이 2013년 2월 19일 질문

1개의 답변

0 추천
onKeyDown이랑 메뉴 호출하는거랑 충돌해서 그렇습니다.

onKeyDown에서 true가 리턴되면 이 메서드에서 필요한 동작을 모두 처리한 것으로 간주하여

다음 동작을 처리하지 않게 되는데요(일부 키 제외)

back버튼일때만 true를 리턴하고, 아니면 false를 리턴해야 다음 처리가 진행됩니다.

제 생각엔 onKeyDown말고 onBackPressed를 사용하시는게 좋을듯 합니다.
퐁풍 (8,740 포인트) 님이 2013년 2월 19일 답변
...