2016-05-06 19 views
-1

Ich habe eine Aktivität und Tow Fragmente. Wenn die Anwendung startet, lade ich Fragment eins in Aktivität.Ersetzen Sie das Fragment mit einem anderen

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/fragment_place" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 
</LinearLayout> 

Ich habe Knopf im Fragment ein, und ich möchte, wenn darauf geklickt wurde, ersetzen Sie es mit dem Fragment Schlepptau (Last Elternfragment Container). Das Layout des Fragments ein und Schlepptau sind wie folgt aus:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:id="@+id/replace" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Replace" /> 
</FrameLayout> 

ich Fehler und Anwendung stoppt. Ist es möglich, auf diese Weise zu tun?

+0

Was ist die Frage? – F43nd1r

+0

@ F43nd1r Ich habe die Frage bearbeitet. –

+0

Jetzt gibt es eine Frage. Aber absolut keine Informationen zu deinem Problem. Wir brauchen Code und einen Stacktrace. Bitte beachten Sie http://stackoverflow.com/help/how-to-ask – F43nd1r

Antwort

1

einfach diesen Code in Ihre Fragment Schaltfläche klicken Hörer schreiben. So etwas wie dieses

Button button = (Button) findViewById(R.id.fab); 
button.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 
    Fragment fragment = null; 
    fragment = new YourFragment(); 
    FragmentManager frgManager = getSupportFragmentManager(); 
    FragmentTransaction ft = frgManager.beginTransaction(); 
    ft.addToBackStack(null); 
    ft.add(R.id.your_fragment_layout, fragment); 
    ft.commit(); 

    } 
}); 
1

setzen Sie dies in Ihre onclicklistner Ihrer Schaltfläche getFragmentManager(). BeginTransaction(). Ersetzen (R.id.fragment_place, neue Second_fragment()). Commit();

// second_fragment ----, dass Sie aufblasen wollen :)

0

versuchen diese zunächst eine Schnittstelle erstellen. wie folgt: -

public interface Communicator 
{ 
    public void responde(); 
} 

Dann implementiert diese Schnittstelle in Ihrer Aktivität. und schreiben Sie diesen Code für das erste Fragment zu zweit ersetzen.

@Override 
public void responde(){ 
    FragmentManager manager = getFragmentManager(); 
    FragmentTransaction transation = manager.beginTransaction(); 
    SecondFragment secondFragment = new SecondFragment(); 
    transation.replace(R.id.myActivity, secondFragment, "secFrag"); 
    transation.commit();} 

Danach fügen Sie Code in der ersten Fragment

Communicator comm; 

public void onActivityCreated(Bundle savedInstanceState){ 
super.onActivityCreated(savedInstanceState); 
comm = (Communicator)getActivity();} 
//button on click 
public void onClick(View v) {comm.responde();} 

hoffen, dass es funktionieren wird.

+0

Grund für die Verwendung von Communicator? –

+1

Wenn wir Daten von einem Fragment zu anderen senden wollen, dann brauchen wir das –

Verwandte Themen