我有一个活动A,其中包含一个登录片段和一个包含Home Fragment的活动B. 在成功登录请求(异步)后,我将从Login Fragment启动B. 我在登录片段中有一个回调监听器:
onSuccess(result) {
startActivity(B);
}
今天我遇到了这个错误的错误:getting exception "IllegalStateException: Can not perform this action after onSaveInstanceState"。
我认为这不是一个错误,无论如何我不知道如何解决这个问题。 This blog post建议避免异步回调方法中的事务,是的,但是如何? commitAllowingStateLoss()应该作为最后的手段使用:万一,我应该在Activity B创建方法的Home Fragment事务中使用它吗?
基本上,我应该怎么做才能在异步回调后启动另一个活动?
答案 0 :(得分:0)
你应该在AsyncTask中使用onPostExecute(result):
private class LoginTask extends AsyncTask<parameters,...> {
...
protected void onPostExecute(Long result) {
//if result successful start ActivityB
}
}
在asynctask完成后Onpost会触发。
它在UI线程上运行,以便解决您的问题。
击>
将它放在您的主要活动中:
public void run(){
//code you would normally have after task completes
}
然后把它放在你的onSuccess:
mainactivity.runUIonthread()