標簽: Fragment Android
【作者:kidou】
【原文鏈接:http://www.lxweimin.com/p/fff1ef649fc0】
【Github:https://github.com/ikidou/FragmentBackHandler】
用法:
添加依賴
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.ikidou:FragmentBackHandler:2.1'
}
- 在Activity中覆蓋
onBackPressed()
方法
public class MyActivity extends FragmentActivity {
@Override
public void onBackPressed() {
if (!BackHandlerHelper.handleBackPress(this)) {
super.onBackPressed();
}
}
}
- 實現
FragmentBackHandler
public class MyFragment extends Fragment implements FragmentBackHandler {
@Override
public boolean onBackPressed() {
if (handleBackPressed) {
//外理返回鍵
return true;
} else {
// 如果不包含子Fragment
// 或子Fragment沒有外理back需求
// 可如直接 return false;
// 注:如果Fragment/Activity 中可以使用ViewPager 代替 this
//
return BackHandlerHelper.handleBackPress(this);
}
}
}
或讓需要攔截Back鍵的Fragment及父Fragment繼承BackHandledFragment
// [推薦] 適合所有Fragment,只要需要欄截時return true即可,其它的無需關心。
// 當然你也可以讓你的BaseFragment 繼承 BackHandledFragment
public class MyFragment extends BackHandledFragment {
// 如果return false 將自動調用 BackHandlerHelper.handleBackPress(this);
@Override
public boolean interceptBackPressed() {
if (handleBackPressed) {
//外理返回鍵
return true;
} else {
return false;
}
}
// 如果ViewPager中需要欄截back,可覆蓋該方法。
// 非必須,從2.1版本開始,即何使用了ViewPager也沒有問題
@Override
public ViewPager getBackHandleViewPager() {
return null;
}
}