2016-04-30 8 views
0

私はViewPagerサブフラグメントからonBackPressed()を実装しようとしています。私にはいくつかの問題があります。私はリスナーをして両方のために実装しました。しかし、フラグメントBのみで機能します。しかし、フラグメントBからの実装を削除すると、フラグメントAでonBackPressed()が機能しました。間違っていますか?助けapraciete!

構造

Structure)Viewpagerサブフラグメントから



Iやった主な活動の使用このリスナーはリスナー

public interface OnBackPressedListener { 
public void onBackPressed(); 

}

public void setfragmentclick(OnBackPressedListener ob){ 
    onBackPressedListener = ob; 
} 

@Override 
    public void onBackPressed() { 
     onBackPressedListener.onBackPressed(); 

    } 
は、フラグメントAにおいても、私はViewPagerサブフラグメントからonBack実装する別の方法を発見したOnBackPressedListenerインターフェース

MainActivity mainActivity = new MainActivity(); 
    mainActivity.setfragmentclick(this); 
    .... 

    @Override 
      public void onBackPressed() { 
       if (getChildFragmentManager().getBackStackEntryCount() > 0) { 
        getChildFragmentManager().popBackStack(); 
       } 
      } 

答えて

0

を実装フラグメントBでOnBackPressedListenerインターフェース

MainActivity mainActivity = new MainActivity(); 
mainActivity.setfragmentclick(this); 

.... 

@Override 
    public void onBackPressed() { 
     if (getChildFragmentManager().getBackStackEntryCount() > 0) { 
      getChildFragmentManager().popBackStack(); 
     } 
    } 

を実装します。

@Override 
public void onResume() { 
    super.onResume(); 
    getView().setFocusableInTouchMode(true); 
    getView().requestFocus(); 
    getView().setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { 
       if (getChildFragmentManager().getBackStackEntryCount() > 0) 
        getChildFragmentManager().popBackStack(); 

       return true; 
      } 
      return false; 
     } 
    }); 
} 
:あなたは子供の断片がこれを使用している親フラグメントの onResumeに最善の方法は、 KeyEvent.KEYCODE_BACKを使用しているViewPagerでサブフラグメントを持っている場合
関連する問題