2011-11-16 3 views
1

내 NavActivity는 TabActivity를 구현하고 다섯 개의 하위 탭을 가지고 있습니다. 고객이 장치의 뒤로 버튼을 누르면 경고 대화 상자를 표시하고 싶습니다. 그러나 슬픈 표제로,이 상황에서는 항상 반응하지 않습니다.onKeyDown이 TabActivity에서 응답하지 않습니다.

+1

당신이 어떻게 반응을 확인하는 몇 가지 코드를 게시 할 수 있습니다 :이처럼 TabActivity 뭔가에

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { return this.getParent().onKeyDown(keyCode, event); } 

: 아동 활동에서 : 여기

는 당신을위한 코드? –

+0

기기의 '뒤로'버튼 (예 : '집', '옵션 메뉴') 또는 레이아웃에 추가 한 버튼을 의미합니까? – Vladimir

답변

1

제목은 "onKeyDown"이지만 "뒤로"버튼을 클릭 할 필요는 없습니다. 간단하게이 같은 onBackPressed() 활동의 방법, 뭔가 오버라이드 (override) : 자식 활동의

@Override 
public void onBackPressed(){ 
    AlertDialog ad = new AlertDialog.Builder(this) 
     .setMessage("Proceed with back pressed?") 
     .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener()   { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       super.onBackPressed(); 
      } 
     }) 
     .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       ... 
       dialog.dismiss(); 
      } 
     }) 
     .create(); 
    ad.show(); 
} 
0

메서드 OnKeyDown 단지 반환이에 의해 자식 활동 슈퍼 onKeyDown에 부르는 TabActity의 onKeyDown에 전화하기 called.In의 순서입니다. getParent(). onKeyDown (keyCode, event);

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if(keyCode==KeyEvent.KEYCODE_BACK) 
    { 
     if(currenttab==0) 
       { 
        Log.e("current tab if", tabHost.getCurrentTab()+""); 
     finish(); 
     } 
     else 
       { 

        Log.e("current tab else",tabHost.getCurrentTab()+""); 
      tabHost.setCurrentTab(0); 
      return true; //Make sure to call return true else the onkeyDown event will be propogated to the parent method. 
      } 
    } 
    return false; 
} 
관련 문제