Ich möchte nicht neue Activity
für jede Aufgabe erstellen, wie die Geschäftslogik von benutzerdefinierten Fragment
bereits behandelt wird. Es ist eine allgemeine Layout:Generic Zweck Fragment Aktivität
<FrameLayout .. >
<LinearLayout ..
android:id="@+id/fragment" />
</FrameLayout>
ich generic Activity
schaffen wollte, die es verwenden würde und von einer bestimmten Fragment
initialisiert werden.
public class LeliFragmentActivity extends LeliBaseActivity {
public static final String KEY_FRAGMENT = BuildConfig.APPLICATION_ID + ".FRAGMENT";
protected void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_with_fragment);
Fragment fragment = (Fragment) getIntent().getSerializableExtra(KEY_FRAGMENT);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment, calcFragment);
transaction.commit();
}
public static void start(Context c, LeliBaseFragment fragment) {
Intent intent = new Intent(c, LeliFragmentActivity.class);
intent.putExtra(KEY_FRAGMENT, fragment);
c.startActivity(intent);
}
Aber ich fühle, dass dies kein guter Weg ist. Passing Fragment
in der Intent
scheint mir als Overkill. All diese Serialisierung ist teuer. Ich könnte stattdessen den Klassennamen weitergeben. Oder gibt es einen besseren Weg? Oder soll ich einen Activity
für jeden haben (Vollbild) Fragment
? Danke für den Hinweis.
Warum möchten Sie das 'Fragment' an eine neue' Aktivität' übergeben? Würde es nicht trotzdem neue/andere Informationen anzeigen? Warum nicht einfach ein neues 'Fragment' in der neuen' Activity' instanziieren und dann die Daten, die das neue 'Fragment' benötigt, in der' Absicht' übergeben? – Bryan
Ja, ich finde das schwer zu beantworten, weil es keinen Sinn ergibt. Für welchen Anwendungsfall versuchen Sie zu lösen? Weil es vielleicht nichts mit dem aktuellen Lösungspfad zu tun hat, sind Sie – CQM
Ich möchte nicht viele kopierte Aktivitäten haben, die sich nur durch den Namen des Fragments unterscheiden. –