android–java.lang.IllegalStateException:活动已被破坏

android–java.lang.IllegalStateException:活动已被破坏,第1张

概述使用Robolectric,我对android很新.我使用Activity制作了第一个测试类.它工作得很好.现在我想对片段进行测试.@RunWith(RobolectricTestRunner.class)publicclassLoginFragmentTest{privateLoginFragmentfragment;@Beforepublicvoidsetup(){fr

使用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:活动已被破坏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存