close
因為需要在Fragment中讓使用者按了返回鍵後實現某些功能
所以就必須在Fragment裡面直接捕捉到返回鍵
有四個步驟就可以實現了~~
Step 1:
建立一個"interface"
public interface FragmentBackHandler { boolean onBackPressed(); }
Step 2:
建立一個"class"
public class BackHandlerHelper { public static boolean handleBackPress(FragmentManager fragmentManager) { List<Fragment> fragments = fragmentManager.getFragments(); if (fragments == null) return false; for (int i = fragments.size() - 1; i >= 0; i--) { Fragment child = fragments.get(i); if (isFragmentBackHandled(child)) { return true; } } if (fragmentManager.getBackStackEntryCount() > 0) { fragmentManager.popBackStack(); return true; } return false; } public static boolean handleBackPress(Fragment fragment) { return handleBackPress(fragment.getChildFragmentManager()); } public static boolean handleBackPress(FragmentActivity fragmentActivity) { return handleBackPress(fragmentActivity.getSupportFragmentManager()); } public static boolean isFragmentBackHandled(Fragment fragment) { return fragment != null && fragment.isVisible() && fragment.getUserVisibleHint() //for ViewPager && fragment instanceof FragmentBackHandler && ((FragmentBackHandler) fragment).onBackPressed(); } }
建立完之後會有這兩個類別
Step 3:
在你的Fragment裡面要 implements "FragmentBackHandler"
然後就必須要繼承這個 function
@Override
public boolean onBackPressed() {
return BackHandlerHelper.handleBackPress(this);
}
Step 4:
在Fragment的Activity裡面也要記得繼承
@Override
public void onBackPressed() {
if (!BackHandlerHelper.handleBackPress(this)) {
super.onBackPressed();
}
}
這樣就可以在Fragment裡面補捉到返回鍵你想要做的事情
文章標籤
全站熱搜