5

Ich habe einige Code bei der Arbeit geerbt und ich habe eine Frage zu einer Implementierung. Die Anwendung, an der ich arbeite, hat eine Aktivität, die ungefähr 15 verschiedene Fragmente enthält. Die Logik in der Aktivität dieser Fragmente Handhabung lassen sich grob mit dem folgenden Pseudo-Code zusammengefasst werden:Gibt es ein Android-Entwurfsmuster für die Verarbeitung mehrerer Fragmente in einer einzelnen Aktivität?

if (button_1 selected) { 
    load fragment_1; 
} else if (button_2 selected) { 
    load fragment_2; 
} else if (button_3 selected) { 
    load fragment_3; 
} ...and so on x15ish 

Meine Frage ist: Gibt es irgendeine Art von Android-Entwurfsmuster existieren Situationen wie diese zu behandeln? Der Code funktioniert; Ich fühle mich jedoch nicht wohl mit einer gigantischen if/else- oder case-Aussage. Ich sah diese question und es scheint sehr ähnlich zu dem Problem, das ich habe. Ich habe ziemlich viel im Internet gesucht, aber ich habe keine Beispiele oder Best Practices für diese Art von Szenario gefunden.

Wenn mir jemand in die richtige Richtung zeigen oder ein paar Vorschläge haben kann; das wäre großartig. Vielen Dank!

+0

haben Sie diese Option aktiviert http://developer.android.com /intl/zh-cn/training/basics/fragments/communication.html? –

+0

Sie haben in der Regel nicht eine if-else-Kette, in der Regel Sie Registerkarten verwenden, Fragmente oder onClick Methoden für jedes Fragment – Nanoc

+0

@KhizarHayat zu ändern, ja, ich habe meinen gerechten Anteil an Fragmenten des Lesens getan, und ich habe es in ziemlich verwendet wenige Projekte In diesem Szenario habe ich diese Anzahl von Fragmenten jedoch nie in einer einzigen Aktivität gesehen und in der if/else-Anweisung implementiert. – dungtatas

Antwort

0

Sie sollten nicht prüfen, welche Schaltfläche ausgewählt wurde, sondern mit dem onClickListener der Schaltfläche das richtige Fragment auswählen.

buttonForFragment1.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      // select fragment 1 here 
    } 
}); 

In Bezug auf die Frage, ist dies nicht ein Niveau von Design Patterns, sondern Implementierungsdetails (Idiome) und Sie den Code als Geruch richtig erkannt und ich denke, ein mögliche Lösung, die nicht als qualifiziert Ein Muster ist der obige Code.

0

Für jede Taste in Ihrem Layout Sie eine Methode in Ihrer Aktivität zuordnen:

<Button 
    ... 
    android:onClick="startFragmentOne" /> 

Dann diese Methoden implementieren:

public void startFragmentOne(View view) { 
    //TODO 
} 
Verwandte Themen