android - 如何从 Fragment 类中的 AsyncTask 类的 onPostExecute 函数中删除 fragment

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

我有一个 NagivationDrawer,当用户按下特定项目时,我会更改 fragment 。

所以我有这样的东西

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");
        }
    }         

    .
    .
    .
    .
}

我正在使用它来成功删除 fragment :

if (success) {
                getActivity().getSupportFragmentManager().popBackStack();
            } 

但它不起作用,我也尝试了我找到的其他解决方案。

谢谢。

已编辑

这是从 NavigationDrawer Activity 添加 fragment 的方式:

    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); 调用 正如文档所述:

Add this transaction to the back stack. This means that the transaction will be remembered after it is committed, and will reverse its operation when later popped off the stack.

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

关于android - 如何从 Fragment 类中的 AsyncTask 类的 onPostExecute 函数中删除 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696278/

相关文章:

java - 我如何知道何时更新数据库 - Android

android - 防止asynctask被多次执行

android - 从 onhandleintent 启动异步任务

android - transformClassesWithJarMergingForDebug - 重复条目 android/support/v4

android - 使用 NDK 为 Android 编译 Imagemagick

java - 项目点击 fragment 导致 Activity 崩溃

android - 转到下一个 fragment 时如何停止显示空白页

java - 如何创建自适应 Android 应用

java - 同一类的重写 Asynctask 方法内的启动函数

java - 单击按钮时 EditText.getText().toString() 崩溃