Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动和服务之间的通信以更改片段(登录)_Java_Android_Service_Fragment_Fragmenttransaction - Fatal编程技术网

Java 活动和服务之间的通信以更改片段(登录)

Java 活动和服务之间的通信以更改片段(登录),java,android,service,fragment,fragmenttransaction,Java,Android,Service,Fragment,Fragmenttransaction,我有LoginActivity,它最初显示登录片段。现在,当用户填写数据并按下登录按钮时,我会将凭证发送到IntentService。在服务命中服务器之前,它向LoginActivity发送一个本地广域cast意图,以显示加载片段(替换登录片段)。如果登录过程成功终止,则向登录活动发送广播意图以启动main活动,如果失败,则向登录活动发送广播意图以显示错误片段 现在我在用正确的方式做事?发生这个错误怎么样 java.lang.IllegalStateException: Can not perf

我有
LoginActivity
,它最初显示登录片段。现在,当用户填写数据并按下登录按钮时,我会将凭证发送到
IntentService
。在服务命中服务器之前,它向
LoginActivity
发送一个本地广域cast意图,以显示加载片段(替换登录片段)。如果登录过程成功终止,则向
登录活动
发送广播意图以启动
main活动
,如果失败,则向
登录活动
发送广播意图以显示错误片段

现在我在用正确的方式做事?发生这个错误怎么样

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1341)
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1352)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
??我想这个错误会发生,现在我如何在onReceive()方法中处理FragmentTransaction,在该方法中我更改了登录活动中的片段


是否有更好的体系结构来处理使用
活动
IntentService
的登录

尝试使用commitAllowingStateLoss()而不是commit()

编辑:


问题是在onSavedInstanceState方法之后调用commit。当活动不在前面时,您必须注销接收者(在onPause()中)查看此评论stackoverflow.com/a/18306939/1333170

顺便问一下,为什么要使用IntentService登录您的应用程序?IntentService是为长时间运行的操作而设计的。使用AsyncTask不是更好吗?