Ich habe versucht, den folgenden Code:Wie man Fragment auf einen Knopfklick von einer Tätigkeit entweder mit Absicht und ohne Absicht in android öffnet?
Intent in= new Intent(Activity1.this,Fragment.class);
startactivity(in);
Ich habe versucht, den folgenden Code:Wie man Fragment auf einen Knopfklick von einer Tätigkeit entweder mit Absicht und ohne Absicht in android öffnet?
Intent in= new Intent(Activity1.this,Fragment.class);
startactivity(in);
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();
Ich möchte nur dieses Fragment öffnen, wenn ich auf Schaltfläche in Aktivität klicke? –
@SunilKumar Ja, wenn ich dich richtig verstehe. Die Schaltfläche kann das Fragment direkt in der aktuellen Aktivität öffnen. – Bryan
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();
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();
}
});
}
Verfahren nicht sagen, 'startFragment'. Schauen Sie in 'FragmentManager' –
Sie verwenden Intents überhaupt nicht. –