这被称为 状态丢失
。您碰巧从AsyncTask提交FragmentTransaction。框架本身禁止这样做。
如果您可以接受状态丢失和用户意外行为的可能,则可以使用
FragmentTransaction#commitAllowingStateLoss()
代替
FragmentTransaction#commit()
无论如何,请考虑阅读我提供的链接,这是一种非常普遍的情况。
编辑: 此外,有您的问题的解决方法。但是我猜想,这种后果还可能导致状态丢失。尽管如此:
Handler在您的中声明一个
Fragment:
private Handler handler = new Handler();
然后,在您
onPostExecute(..)执行以下操作:
@Overrideprotected void onPostExecute(String result) { progress.dismiss(); Toast.makeText(getActivity().getApplicationContext(), result, Toast.LENGTH_LONG).show(); handler.post(new Runnable() { @Override public void run() { hideKeybord(edt_txt); FragmentManager fm = getActivity().getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fm.beginTransaction(); StoreProfileGridFragment fm2 = new StoreProfileGridFragment(); fragmentTransaction.replace(R.id.relative_sendimage_send, fm2, "HELLO"); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } }); return;}


