我有一个 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/