您可以使用接口将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无缘无故重新启动