2012-02-10 3 views
0

내 앱에서 ViewFlipper를 사용하고 페이지 내부를 이동하려면 다음에 버튼을 사용하고 onBackPressing을 캡처하여 다시 돌아옵니다.안드로이드 : onBackPressed가있는 ViewFlipper

1) 내가 버튼을 클릭 2 페이지로 이동 :

동작은 다음과 같다. 2) 다시 클릭하고 코드 작업 3)) 네 옆에있는 버튼을 다시 클릭 다시 클릭하고 지금 실 거예요 4 단계에 더 이상

일, 나는 진동 때문에 이벤트 화재,하지만 내 viewflipper를 느낄 수있다 돌아 가지 않을 것이다.

의견이 있으십니까?

감사의

+0

일부 코드가 죄송이 문제 ... – Devunwired

+0

를 진단되는 가장 도움이 될 것입니다 만드는 희망 문제 해결 (버그 발견), 두 번째 페이지에서 editText의 포커스를 설정하면 뒤로 버튼이 더 이상 작동하지 않습니다. – Giuseppe

답변

2
public void onBackPressed() { 


     if (flipView.getDisplayedChild() == 1) { 
      flipView.setDisplayedChild(0); 

     } else if (flipView.getDisplayedChild() == 0) { 
      flipView.setDisplayedChild(1); 
     } 

    } 

이 나를 위해 완벽하게 작동합니다. onBackPressed 메소드가 back 버튼을 호출하는 메소드로 변경하십시오.

0

그냥 다른 답변에 무언가를 추가하는 것입니다.

의 우리는 우리가 일을 통해 틀지 만 두 개의 뷰 있다고 가정 해 봅시다 :

public void onBackPressed() { 

    if (mViewFlipper.getDisplayedChild() == 1) { 
     mViewFlipper.setDisplayedChild(0); 
    } else if (mViewFlipper.getDisplayedChild() == 0) { 
     flipView.setDisplayedChild(1); 
    } 
} 

충분하지입니다. 사실, 그것은 당신을 위해 또 다른 문제를 만듭니다. 보기가 0 (첫 번째) 인 경우 뒤로 단추를 누르면 아무것도 표시되지 않습니다. 활동이 종료되지 않습니다. 이는 super.onBackPressed()을 호출하지 않았기 때문입니다. 위 코드에 super.onBackPressed()을 추가하면 다른 문제가 발생합니다. 1 (두 번째보기)에서 플립하면 첫 번째보기 (0)로 이동 한 다음 활동을 종료합니다. 한 활동에서 다른 활동으로 전환하는 동안보기를 건너 뛰는 별난 애니메이션이 아닌 다른 경우에는 잘못된 것입니다.

가 포함 된 활동에 대한 onBackPressed()을 구현하는 가장 좋은 방법 ViewFlipper은이 :

public void onBackPressed() { 
    int displayedChildId = mViewFlipper.getDisplayedChild(); //get current view's number 
    if (displayedChildId > 0) { //if this number is greater than 0(let's say 5) 
     mViewFlipper.setDisplayedChild(displayedChildId - 1);//We then go down that number by 1. That is 5 - 1, which is 4. This happens until displayedChildId isn't greater than 0 anymore, which is then the first view. if we press back from here, we exit the activity. 
    } else { 
     super.onBackPressed(); 
    } 
} 

나는 이것이 의미