最新更新-2019年4月25日
新版本androidx.activity ver。1.0.0-alpha07带来了一些变化
Android官方指南中的更多说明:提供自定义后退导航
例:
public class MyFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OnBackPressedCallback callback = new OnBackPressedCallback(true ) {
@Override
public void handleOnBackPressed() {
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
...
}
旧更新
UPD:2019年4月3日
现在将其简化。更多信息在这里
例:
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), this);
@Override
public boolean handleOnBackPressed() {
return true;
}
不推荐使用(自1.0.0-alpha06版本2019年4月3日起):
既然这样,就可以使用片段中的JetPack 实现OnBackPressedCallback
并将其添加到活动中来实现:
getActivity().addOnBackPressedCallback(getViewLifecycleOwner(),this);
您的片段应如下所示:
public MyFragment extends Fragment implements OnBackPressedCallback {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().addOnBackPressedCallback(getViewLifecycleOwner(),this);
}
@Override
public boolean handleOnBackPressed() {
return true;
}
@Override
public void onDestroyView() {
super.onDestroyView();
getActivity().removeOnBackPressedCallback(this);
}
}
UPD:
您的活动应扩展为AppCompatActivity
或FragmentActivity
在Gradle文件中:
implementation 'androidx.appcompat:appcompat:{lastVersion}'