java.lang.IllegalStateException: Aktivität zerstört wurde
Arbeiten mit Robolectric , ich bin sehr neu in android. Machte ich einen ersten test-Klasse mit Aktivität. Es arbeitete schön.
Jetzt will ich einen test machen für das fragment.
@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());
}
}
Dies ist mein Erster test Klasse für die Fragment-Klasse. Es wirft
"java.lang.IllegalStateException: Activity has been destroyed" in startFragment#fragmentTransaction.commit().
Weiß jemand, wie man dieses Problem beheben ?
Finden Sie ganze Quelle aus https://github.com/msbaek/frame-test
Vielen Dank im Voraus !!
hum, nicht zerstören Sie Ihre Aktivität vor Begehen ein fragment Transaktion ?
InformationsquelleAutor Myeonseok Baek | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fragmente sollen angezeigt werden aus einer Tätigkeit. Der Fluss sollte sein:
In Ihrem Fall haben Sie nicht eine Verbindung zu einer realen Tätigkeit. Vergeben Sie eine FragmentActivity mit neuen FragmentActivity() und versuchen Sie, die Unterstützung der manager. Während dieser kompiliert werden, es gibt keine "echte" Aktivität in der Lage, verwalten Sie Ihre fragment. Fragmente Hinzugefügt werden können, über Tätigkeiten, die bereits angezeigt und es ist hier nicht der Fall.
Empfehle ich die Lektüre dieser Seite, wie Sie erklärt, dass sich diese Dinge sehr gut: http://developer.android.com/guide/components/fragments.html
Was bedeutet "real" - Aktivität bedeuten, in Zusammenhang mit Robolectric?
Was hast du für eine Verbindung des fragments, der Aktivität? Ich erlebe das gleiche problem.
InformationsquelleAutor azertiti
In meinem Fall, speziell mein problem war das beim anlegen der Aktivität.
Ich war mit
Sein und es sollte
Hoffe es hilft jemanden 😀
InformationsquelleAutor Felipe Conde
Dies ist die funktionierende version. Folgenden 3 Zeilen sind wichtig(es ist von robolectric-source - DialogFragmentTest).
InformationsquelleAutor Myeonseok Baek
Dass ist mir passiert, als ich fragmentTransaction.commitAllowingStateLoss(); aus sub-Fragment, dessen Eltern fragment hatte setRetainInstance(true); ich hatte Aktivität als Eigenschaft, was dazu führen undichte Aktivität auf rotation.
InformationsquelleAutor Malachiasz