Android FragmentTransaction在不同版本下的奇怪问题
来源:互联网 发布:json rpc 2.0使用实例 编辑:程序博客网 时间:2024/05/12 13:37
目前在做的一款APP,用到了一个布局块中的Fragment的切换,其中一个按钮按下后的事件如下:
btnTranslate.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){/*当前界面不是翻译界面时才进行下列动作*/if( MAIN_FRAGMENT_ID != currentFragmentId ){setChoosedBtnState(MAIN_FRAGMENT_ID);FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();if( null == fragmentTranslate )fragmentTranslate = new MainUI();hideCurrentFragment(fragmentTransaction);fragmentTransaction.show(fragmentTranslate);<pre name="code" class="java"> fragmentTransaction.add(R.id.fragment_content, fragmentTranslate, "MainUI");fragmentTransaction.commit();currentFragmentId = MAIN_FRAGMENT_ID;}}});
hideCurrentFragment(fragmentTransaction);fragmentTransaction.show(fragmentTranslate);这两句本来是为了提高切换速度,并且保存用户产生的数据而选用隐藏/显示来代替replace(remove/add),运行时在Android 4.0的模拟器和我Android 4.1的手机上没有任何问题,效果也很好,但是当我把程序放在我的Android 4.4(Galaxy S5··貌似这个机型问题挺多···)时出现闪退!具体情形是,当我点击一个按钮创建了一个Fragment的实例时程序正常运行,但是当我再次点击已经创建过实例的界面按钮时就会闪退,一直不明白是怎么回事,查了API也没找到相关的说明。
搞了好久,最后看到
<pre name="code" class="java">fragmentTransaction.add(R.id.fragment_content, fragmentTranslate, "MainUI");这句话,它作用就是把产生的Fragment实例加入到指定的布局块中,再联想我的问题,也就是在加入一次然后再次加入出现了问题,所以试着只在第一次创建Fragment实例时调用这条语句,果然问题解决!
修改后的代码如下:
btnTranslate.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){/*当前界面不是翻译界面时才进行下列动作*/if( MAIN_FRAGMENT_ID != currentFragmentId ){setChoosedBtnState(MAIN_FRAGMENT_ID);FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();if( null == fragmentTranslate ){fragmentTranslate = new MainUI();fragmentTransaction.add(R.id.fragment_content, fragmentTranslate, "MainUI");}hideCurrentFragment(fragmentTransaction);fragmentTransaction.show(fragmentTranslate);fragmentTransaction.commit();currentFragmentId = MAIN_FRAGMENT_ID;}}});
0 0
- Android FragmentTransaction在不同版本下的奇怪问题
- 在ios 下获取 rootviewcontroller 的版本不同的问题
- GDAL在不同python版本下的编译问题
- Android 剪贴板操作方法在不同版本API下的使用
- Android 剪贴板操作方法在不同版本API下的使用
- android:lineSpacingMultiplier在不同版本Eclipse下的使用细节。
- 解决mingw动态库在vs下调用 release版本中会出现的奇怪问题
- Android 奇怪的问题
- JsonCPP在linux下的一个奇怪的问题
- vs.net2003在代理下的一个奇怪小问题
- rails在windows下调用命令行出现的奇怪问题
- 如何解决在不同浏览器版本下播放视频的问题。
- android奇怪的eclipse下编译问题的解决
- cocos2dx 2.0版本在android下的安装配置问题
- cocos2dx 2.0版本在android下的安装配置问题
- android:configChanges属性在不同版本SDK下需要注意的事项
- HttpURLConnection 因Android版本不同而导致的Bad Request问题,在2.0+不行,4.0+可以
- web.xml在不同的Servlet版本下的区别
- JavaScript:Array
- 要成功不需要什么特别的才能,只要把你能做的小事做得好就行了
- Leetcode Restore IP Addresses
- 推送平台架构
- B/S架构的CRM&ERP系统
- Android FragmentTransaction在不同版本下的奇怪问题
- 黑马程序员---(学习日记——GUI及IO)流设计实现记事本程序
- PHP内核中的神器之HashTable
- 5.4
- 相似图片搜索原理三(颜色直方图—c++实现)
- 任何值得去的地方,都没有捷径。
- 一个IP能建立的最大连接数是多少?
- javabean在jsp中的使用
- 队列的链式结构C语言实现