효율적인 스택 활용

2616 단어 FragmentAndroid

스택 활용, 리턴 버튼 설치 등을 통해


가설 사례



이러한 Activity가 있다고 가정합니다.
중간 PopUp의 패널과 위에 보이는 최대화된 이미지 ImageView와 회색 반투명 배경의 View는 Add를 통해 세션을 구현합니다.
DialogFragment를 완전히 사용자 정의하면 됩니다.
어떤 경우와 일반적인 사용자 정의 세션을 사용해서 Activity에 떠다니는 UI를 만들고 닫는 것이 아니라 열거나 닫는 세션을 만드는 경우도 있다고 생각합니다.
이런 상황에서 창고를 이용하여 상태를 관리하는 방법.

규격.


떠오르는 두 개의 Fragment는 반자물쇠로 자신을 닫는다.
Activity는 Fragment가 표시되지 않은 상태에서 리턴 키를 누르고 tab이 1번이 아닐 때 1번 탭을 되돌려줍니다.

Activity 설치


다시 쓰기 onBackPresed

@Override
public void onBackPressed() {
     //バックスタックの登録数をチェックして0であればPopUpは存在しない
     if (0 == mFragmentManager.getBackStackEntryCount())『
        if(mTabClickNo != 0){
            //1番のタブに戻すような処理をここで実装するここではchangeTabというメソッドがあるという想定
            changeTab(1);
            return;
        }
     }
     super.onBackPressed();
}

PopUpFragment를 백그라운드 스택에 등록


FragmentTransaction에서 Add 등을 진행할 때 addToBackStack을 실행합니다.
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.abc_fade_in, R.anim.abc_fade_out);
//mPopUpFragmentにフラグメントのインスタンスを格納しているとする
fragmentTransaction.add(R.id.root_layout, mPopUpFragment);
//addToBackStackしておくこれでBackStackに登録される
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

Fragment 처리


PopuFragment와 이미지 확대 표시는 모두 같습니다.
사례로 볼 때 Popup Fragment 측에서 ImageView를 눌렀을 때 이미지 확대를 호출하여 Fragment를 표시하는 처리가 있으니 아까의ddToBackStack을 잊지 마십시오.

OnKeyListener 설정


여기는 OncreateView입니다. LayouXML inflate를 사용하면 View 전체에 익명 함수를 설정합니다.
또한 DialogFragment가 아니라고 가정하면 아래의 Activity 대상을 클릭하지 않도록 클릭 이벤트를 가져오십시오.
View rootView = inflater.inflate(R.layout.fragment_popup, container, false);
rootView.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            if (event.getAction() == KeyEvent.ACTION_UP) {
                getFragmentManager().popBackStack();
                return true;
            } else {
                return true;
            }
        }
        return false;
    }
});

rootView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        return;
    }
});
이상의 절차에서 백엔드 키를 사용하면 Fragment의 후퇴 동작을 쉽게 실현할 수 있다.

좋은 웹페이지 즐겨찾기