我有两个片段 1.登录片段 2.属性片段
在我的主要活动onResume方法中,我这样称呼
showFragment(LOGIN,FALSE);
public void showFragment(int fragment_index, boolean addTobackStack) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ftrans = fm.beginTransaction();
for(int i=0;i<fragments.length;i++){
if(i==fragment_index){
ftrans.show(fragments[i]);
}else{
ftrans.hide(fragments[i]);
}
}
if(addTobackStack){
ftrans.addToBackStack(null);
}
ftrans.commit();
}
在我的属性片段中,我正在执行asynctask,当任务完成时,我再次调用
showFragment(LOGIN,false);
活动不在后台时工作正常。
然而,当我在属性片段中,我正在执行asynctask,然后进行活动 背景。然后异步任务仍然在后台运行并完成并给出上述错误。有什么方法可以解决这个问题。
我的属性片段代码是
if (v == Properties_Ok) {
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
return ConnectionProvider.checkConnectionProperties();
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (result == true) {
mMainActivity.showFragment(LOGIN,false);
} else {
networkError();
}
mProgressDialog.dismiss();
}
}.execute();
}
致电ftrans.commitAllowingStateLoss();
而不是ftrans.commit()
来解决此问题