android - 如何从 Fragment 类中的 AsyncTask 类的 onPostExecute 函数中删除片段
问题描述
我有一个 NagivationDrawer,当用户按下特定项目时,我会更改片段。
所以我有这样的东西
public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
......
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
.......
}
public class MyAsynchTack extends AsyncTask<Void, Void, Boolean> {
.
.
.
@Override
protected void onPostExecute(final Boolean success) {
showProgress(false);
if (success) {
getActivity().getSupportFragmentManager().popBackStack();
} else {
String title = getString(R.string.serverErrTitle);
String message = getString(R.string.serverErr);
DialogBoxNetworkError dialog = new DialogBoxNetworkError();
Bundle args = new Bundle();
args.putString(DialogBoxNetworkError.ARG_TITLE, title);
args.putString(DialogBoxNetworkError.ARG_MESSAGE, message);
dialog.setArguments(args);
dialog.show(getActivity().getFragmentManager(), "tag");
}
}
.
.
.
.
}
我正在使用它来删除成功的片段:
if (success) {
getActivity().getSupportFragmentManager().popBackStack();
}
但它不起作用,我也尝试了我发现的其他解决方案。
谢谢你。
已编辑
这是从 NavigationDrawer 活动添加片段的方式:
public void addNewWh(View view) {
SellerNewWhFragment fragment = null;
fragment = new SellerNewWhFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, fragment);
fragmentTransaction.commit();
}
解决方案
正如文档所述,您错过了fragmentTransaction.addToBackStack(null);
电话:
将此事务添加到后台堆栈。这意味着事务将在提交后被记住,并在以后从堆栈中弹出时将其操作反转。
之后,您将能够撤消此交易。
推荐阅读
- vb.net - vb.net 使用 webbrowser1 自动登录
- python - BeautifulSoup 如何只返回类对象
- c# - 深度图像的时间滤波
- amazon-sns - 用于耗时 API 调用的 AWS SNS
- c# - 如何在表单中创建对象数组,然后将此数组发送到控制器?
- gatling - Gatling:将 Json 响应中的字段映射到映射对象
- python - Pandas groupby:删除重复项
- python - 使用 if 语句时在 Python 中收到错误消息(关闭)
- php - 在 php 收据上显示条形码
- java - 尝试使用 TO_TIMESTAMP 函数运行本机查询时,Spring JPA 存储库抛出异常