2016-08-04 3 views

Antwort

4

Dies ist nicht how fragments work muss Fragmente zu einem Activity angebracht werden. Um den gewünschten Effekt zu erhalten, müssen Sie entweder eine neue Activity starten, die das Fragment enthält, das Sie anzeigen möchten, oder das neue Fragment im aktuellen Activity anzeigen.

Um zu entscheiden, welchen Ansatz Sie nehmen möchten, würde ich überlegen, wie Sie die Fragment die Navigation Ihrer Schnittstelle beeinflussen möchten. Wenn Sie möchten, dass der Benutzer mithilfe der Schaltfläche Zurück zur vorherigen Ansicht zurückkehren kann, sollten Sie eine neue Activity starten. Ansonsten sollten Sie eine Ansicht in Ihrem aktuellen Activity durch die neue Fragment ersetzen.

Obwohl es ist möglich, eine Fragment auf dem Backstack hinzuzufügen, würde ich nur versuchen, dies zu tun, wenn Sie mit der Struktur Ihrer Benutzeroberfläche vertraut sind.

Um ein neues Fragment in den aktuellen Activity zeigen Sie eine FragmentTransaction verwenden können:

Fragment fragment = CustomFragment.newInstance(); 

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

transaction.replace(R.id.container_layout, fragment).commit(); 
+1

Ich möchte nur dieses Fragment öffnen, wenn ich auf Schaltfläche in Aktivität klicke? –

+0

@SunilKumar Ja, wenn ich dich richtig verstehe. Die Schaltfläche kann das Fragment direkt in der aktuellen Aktivität öffnen. – Bryan

2

schreiben diesen Code in Ihren onCreate oder in Ihrer Absicht:

FragmentManager fm = getSupportFragmentManager(); 
YourFragment fragment = new YourFragment(); 
fm.beginTransaction().add(R.id.main_contenier,fragment).commit(); 
1

Fragmente nicht öffnen durch Intent.

Sie sollten den Fragmentmanager verwenden.

Fragment fragment= new YourFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, fragment); // fragment container id in first parameter is the container(Main layout id) of Activity 
transaction.addToBackStack(null); // this will manage backstack 
transaction.commit(); 

Musterbeispiel Fragment

public class MyFragment extends Fragment implements View.OnClickListener { 



@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view= inflater.inflate(R.layout.fragment_my, container, false); 

    Button button1= (Button) view.findViewById(R.id.button1_Id); 
    Button button2= (Button) view.findViewById(R.id.button2_Id); 


    return view; 
} 

button1.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    Fragment fragment= new YourFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, fragment); // fragmen container id in first parameter is the container(Main layout id) of Activity 
transaction.addToBackStack(null); // this will manage backstack 
transaction.commit(); 
} 
}); 

} 
Verwandte Themen