Java.lang.IllegalStateException: commit already called
2016-12-28 10:08
351 查看
这个问题的原因是我们持有了一个全局的FragmentTransaction 导致我们的commit只能被调用一次。
解决方法,可以将我们的FragmentTransaction变成我们对应的局部变量,这样我们就可以在每个局部调用commit而不会报错,可以愉快的进行Fragment的操作了。
解决后的代码如下
解决方法,可以将我们的FragmentTransaction变成我们对应的局部变量,这样我们就可以在每个局部调用commit而不会报错,可以愉快的进行Fragment的操作了。
解决后的代码如下
/** * 当前为 IChatRecordTypeListener接口的实现类 * * @author 候帅 * Created by iyunwen on 2016/12/27. */ public class ChatRecordTypeListenerImpl implements IChatRecordTypeListener { private FragmentManager mSupportFragmentManager; public ChatRecordTypeListenerImpl(FragmentManager mSupportFragmentManager) { this.mSupportFragmentManager = mSupportFragmentManager; } @Override public void onSingleImage(RequestRobotResult robot_information) { FragmentTransaction fragmentTransaction = mSupportFragmentManager.beginTransaction(); ChatSingleImageFragment chatSingleImageFragment = new ChatSingleImageFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("info", robot_information); chatSingleImageFragment.setArguments(bundle); fragmentTransaction.replace(R.id.fl_chat_show, chatSingleImageFragment) .addToBackStack(null) // TODO: 2016/12/27 后退和进入的动画效果 // .setCustomAnimations() .commit(); } @Override public void onMoreImage(RequestRobotResult robot_information) { FragmentTransaction fragmentTransaction = mSupportFragmentManager.beginTransaction(); ChatMoreImageFragment chatMoreImageFragment = new ChatMoreImageFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("info", robot_information); chatMoreImageFragment.setArguments(bundle); fragmentTransaction.replace(R.id.fl_chat_show, chatMoreImageFragment) .addToBackStack(null) // TODO: 2016/12/27 后退和进入的动画效果 // .setCustomAnimations() .commit(); } @Override public void onMoreText(Question_RobotAnswer robot_information) { FragmentTransaction fragmentTransaction = mSupportFragmentManager.beginTransaction(); ChatMoreTextFragment chatMoreTextFragment = new ChatMoreTextFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("info", robot_information); chatMoreTextFragment.setArguments(bundle); fragmentTransaction.replace(R.id.fl_chat_show, chatMoreTextFragment) .addToBackStack(null) // TODO: 2016/12/27 后退和进入的动画效果 // .setCustomAnimations() .commit(); } @Override public void onSingleText(Question_RobotAnswer robot_information) { FragmentTransaction fragmentTransaction = mSupportFragmentManager.beginTransaction(); ChatTextFragment chatTextFragment = new ChatTextFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("info", robot_information); chatTextFragment.setArguments(bundle); fragmentTransaction.replace(R.id.fl_chat_show, chatTextFragment) .addToBackStack(null) // TODO: 2016/12/27 后退和进入的动画效果 // .setCustomAnimations() .commit(); } @Override public void onAudio(Question_RobotAnswer robot_information) { FragmentTransaction fragmentTransaction = mSupportFragmentManager.beginTransaction(); ChatAudioFragment chatAudioFragment = new ChatAudioFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("info", robot_information); chatAudioFragment.setArguments(bundle); fragmentTransaction.replace(R.id.fl_chat_show, chatAudioFragment) .addToBackStack(null) // TODO: 2016/12/27 后退和进入的动画效果 // .setCustomAnimations() .commit(); } }
相关文章推荐
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- Caused by: java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- 我的android异常系列——java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- Android:java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called
- java.lang.IllegalStateException: commit already called