【问题标题】:How do I remove a fragment from onPostExecute function of an AsyncTask class inside the Fragment class如何从 Fragment 类中的 AsyncTask 类的 onPostExecute 函数中删除片段
【发布时间】:2018-06-05 09:08:06
【问题描述】:

我有一个 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();
}

【问题讨论】:

  • 要替换片段吗?
  • @Zelldon 是的,要么将其替换为之前的片段,要么将其删除。
  • 请贴出如何添加片段的代码
  • @Zelldon 我已经编辑了我的问题
  • 你错过了fragmentTransaction.addToBackStack(null);

标签: android android-fragments android-asynctask navigation-drawer fragmentmanager


【解决方案1】:

您错过了fragmentTransaction.addToBackStack(null); 电话 正如文档所述:

将此事务添加到后台堆栈。这意味着事务将在提交后被记住,并在以后从堆栈中弹出时反转其操作。

之后,您将能够撤消此交易。

【讨论】:

  • 谢谢,这就是问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多