使用Robolectric,我对android很新.我使用Activity制作了第一个测试类.它工作得很好.
现在我想对片段进行测试.
@RunWith(RobolectricTestRunner.class)public class LoginFragmentTest { private LoginFragment fragment; @Before public voID setup() { fragment = new LoginFragment(); startFragment(fragment); assertthat(fragment, notNullValue()); assertthat(fragment.getActivity(), notNullValue()); } private voID startFragment(LoginFragment fragment) { FragmentManager fragmentManager = new FragmentActivity().getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(fragment, null); fragmentTransaction.commit(); } @Test public voID login() { EditText IDEditText = (EditText)fragment.getActivity().findVIEwByID(R.ID.main_ID); assertthat(IDEditText, notNullValue()); }}
这是我第一个Fragment类的测试类.它抛出
"java.lang.IllegalStateException: Activity has been destroyed" in startFragment#fragmentTransaction.commit().
谁知道如何解决这个问题?
你可以从https://github.com/msbaek/frame-test找到整个来源
提前致谢 !!
解决方法:
片段应该从Activity中显示.流程应该是:
>在FragmentActivity类中分配新的片段对象
>让片段管理器添加新分配的片段
在您的情况下,您没有与真实活动的连接.您使用新的FragmentActivity()分配FragmentActivity并尝试获取支持管理器.虽然这可以编译,但没有“真正的”活动能够管理您的片段.可以在已经显示的活动上添加片段,但事实并非如此.
我建议阅读这个页面,因为它很好地解释了这些:http://developer.android.com/guide/components/fragments.html
总结以上是内存溢出为你收集整理的android – java.lang.IllegalStateException:活动已被破坏全部内容,希望文章能够帮你解决android – java.lang.IllegalStateException:活动已被破坏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)