Ich habe eine Hauptaktivität mit einigen Elementen. Einer von ihnen ist ein Button. Ich möchte ein Fragment laden, wenn auf die Schaltfläche geklickt wird. Ich möchte, dass das Fragment die gesamte Aktivität abdeckt und nicht nur in einem Layout drin ist. Dann gibt es im Fragment auch einen Button, der ein weiteres Fragment laden muss, das alles abdeckt, dann noch eins und so weiter.Fragment oben auf einer Aktivität
Also habe ich einen OnClickListener auf die Aktivität gesetzt, um den ersten der Fragmente zu laden. Die Aktivität wird problemlos geladen. Wenn ich auf Buttons für andere Aktivitäten klicke, ist alles gut. Aber egal, was ich versuchte, es stürzt immer ab, wenn ich auf den Button klicke, der das Fragment laden soll.
Hier ist der Haupt-Code der Aktivität:
public class SignUpActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
Button next = (Button) findViewById(R.id.button_next_name);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SignNameFragment nameFragment = new SignNameFragment();
fragmentTransaction.add(PROBABLY_WHAT_I_AM_DOING_WRONG,nameFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
}
}
Alle xml ziemlich gleich sind. RelativeLayout für die Aktivität, FrameLayout für die Fragmente und ScrollView, ImageView, EditText, TextView und Button für alle.
Dinge habe ich versucht, so weit nach Anregungen auf dem Netz:
- die XML-Hauptaktivität eine RelativeLayout verwendet. Ich versuchte, das Fragment in sie zu laden, aber es versäumt
- ich es geändert
- FrameLayout benutzte ich fragmentTransaction.add (R.id.fragment_container, nameFragment)
- Statt hinzufügen() verwenden, habe ich versucht, ersetzen (R.id.activity_sign_up, nameFragment)
- Erweiterung zu FragmentActivity
- einstellen eines FrameLayout als Fragment Container in meinem Haupt-xML-Aktivitäten
ich glaube, mein Fehler ist, dass ich nicht setzen, wo ich will das Fragment in die hinzufügen richtiger Weg.
Ich bin mir ziemlich sicher, dass es ein Anfängerfehler wird, aber ich habe noch nie zuvor Fragmente benutzt. Also irgendwelche Vorschläge?
Dank
EDIT: , dass der Fehler ist, wenn ich auf die Schaltfläche klicken
E/Android Runtime: FATAL AUSNAHME: Haupt Prozess: be.test.test, PID: 16763 java .lang.RuntimeException: [email protected] muss OnFragmentInteractionListener bei layout.SignNameFragment.onAttach (SignNameFragment.java:84) bei android.support.v4.app.FragmentM implementieren anagerImpl.moveToState (FragmentManager.java:1043) bei android.support.v4.app.BackStackRecord.setLastIn (BackStackRecord.java:838) bei android.support.v4.app.BackStackRecord.calculateFragments (BackStackRecord.java:861) bei android.support.v4.app.BackStackRecord.run (BackStackRecord.java:719) bei android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1677) bei android.support.v4.app. FragmentManagerImpl $ 1.run (FragmentManager.java:536) bei android.os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper .loop (Looper.java: 145) bei android.app.ActivityThread.main (ActivityThread.java:6145) bei java.lang.reflect.Method.invoke (Native Methode) bei java.lang.reflect.Method.invoke (Method.java : 372) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1399) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1194)
Warum Sie den Fehler nicht posten? –
Mögliches Duplikat von [So implementieren Sie OnFragmentInteractionListener] (http://stackoverflow.com/questions/24777985/how-to-implement-onfragmentinteractionlistener) –
Wenn Sie den OnFragmentInteractionListener nicht benötigen, können Sie ihn vollständig entfernen. –