2017-03-02 4 views
0

Ich verstehe, wie benutzerdefinierte Attribute für ein Fragment definiert und ihre Werte in XML angegeben werden (wie in this answer). Aber ich bin mir nicht sicher, wie dies für Fragmente zu tun ist, die dynamisch in Activity.onCreate() erstellt werden. Wie stelle ich die Attributwerte bereit, so dass das Fragment sie erhalten kann, indem Context.obtainStyledAttributes() in seinem onInflate() aufgerufen wird?Angeben von benutzerdefinierten Attributwerten an ein dynamisch erstelltes Android-Fragment

Antwort

1

Wie stelle ich das Attribut

Werte, die Sie benötigen, um Ihre Fragment Handhabung Argumente zu machen (siehe setArguments()) und dann passieren, was Sie zu Ihrem neu erstellten Fragment Objekt benötigen, zwingende XML oder framgent Standardwerte.

+0

Hallo Marcin. Ich verstehe, wie man das macht (und das ist meine aktuelle Problemumgehung), aber die Verwendung der Argumente bedeutet, dass, wenn ich das Fragment arbeiten will, wenn es statisch in xml oder dynamisch erstellt wird, muss ich die Attributwertbehandlung zweimal implementieren. Das scheint mir nicht richtig zu sein. –

+0

Sie können separate Setter-Methoden für jedes behandelte Attribut erstellen und Daten entweder von XML-Attributen des Bündels an zur Verarbeitung übergeben, so dass Sie immer noch eine Implementierung haben. –

+0

'das Attribut value handling zweimal' Die Verwendung von Argumenten ist der einzig richtige Weg, da es sich automatisch um die Fragment-Reinmantiation handelt –

0

Verwenden Sie den folgenden Code ein:

@Override 
    public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { 
     super.onInflate(activity, attrs, savedInstanceState); 
     // Your code here to process the attributes 
    } 
Verwandte Themen