2012-02-10 11 views
0

私のアプリでViewFlipperを使用し、ページ内を移動するには、次のボタンとonBackPressingをキャプチャして戻ることができます。Android:ViewFlipper with onBackPressed

1)私はボタンをクリックして、2ページに移動:

動作は次のようです。 2)[戻る]をクリックして、コードの作業 3)) 4次へ]ボタンをもう一度クリックし、[戻る]をクリックして、今文句を言わないステップ4の上にはもう

仕事、私は振動するので、イベントの火が、私のviewflipperを感じることができます戻らない。

提案がありますか?

感謝の

+0

は、この問題を診断されます願っています... – Devunwired

+0

申し訳ありませんが、問題が解決されました(バグが発見されました)、2番目のページにeditTextのフォーカスを設定した場合、戻るボタンはもう機能しません。 – Giuseppe

答えて

2
public void onBackPressed() { 


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

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

    } 

これは私のために完璧に動作します。これまでのメソッドが戻るボタンを呼び出すときにonBackPressedを変更します。

0

他の回答に何かを追加するだけです。

public void onBackPressed() { 

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

が十分ではありません。

は、我々は我々がやって、めくっているだけで2つのビューがあるとしましょう。実際、それはあなたのために別の問題を作り出します。 ビューが0(最初)の場合、[戻る]ボタンを押すと、何も起こりません。アクティビティは終了しません。これは、super.onBackPressed()を呼び出していないためです。上記のコードにsuper.onBackPressed()を追加すると、別の問題が発生します。 1(2番目のビュー)からフリップすると、最初のビュー(0)に移動してアクティビティを終了しますが、1つのアクティビティから別のアクティビティに移行する間にビューをスキップする奇妙なアニメーション以外の場合は間違っています。

ViewFlipperを含むあなたの活動のためのonBackPressed()を実施するための最良の方法はこれです:

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(); 
    } 
} 

私は、これはいくつかのコードが最も参考になる感覚

関連する問題