您可以使用接口将Fragment与其宿主Activity连接起来,并在Activity中关闭Fragment。以下是一个示例代码:
1.在Fragment中创建接口:
public interface OnCloseListener { void onClose(); }
2.在Activity中实现该接口:
public class MainActivity extends AppCompatActivity implements MyFragment.OnCloseListener {
@Override
public void onClose() {
getSupportFragmentManager().popBackStack();
}
}
3.在Fragment中调用该接口:
public class MyFragment extends Fragment {
OnCloseListener mListener;
// ...
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnCloseListener) {
mListener = (OnCloseListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnCloseListener");
}
}
// ...
@Override
public void onPause() {
super.onPause();
mListener.onClose();
}
}
在上面的代码中,MyFragment在onPause()期间调用mListener.onClose()方法,该方法将在MainActivity中实现,并在那里关闭Fragment。通过使用接口,我们可以避免调用Activity.finish()方法,从而避免出现Activity无法关闭的错误。
上一篇:Activity未能及时暂停。
下一篇:Activity无缘无故重新启动