1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. NutCrisp, 15.03.2011 #1
    NutCrisp

    NutCrisp Threadstarter Neuer Benutzer

    Hey,

    ich möchte mit einer Klasse, die nicht die Activity ist,I mageButton beerben. Allerdings hat ImageButton ja keinen Standardkonstruktor, sondern ich muss ein Context übergeben.
    Aber wie kann ich das machen?
    Muss ich wirklich beim Erstellen der Objekte das Context übergeben und dann an ImageButton weiterreichen?

    Grüße
     
    Zuletzt bearbeitet: 15.03.2011
  2. Neeldarax, 15.03.2011 #2
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Code:
    public class MyImageButton extends ImageButton {
    
        public MyImageButton(Context context) {
            super(context);
        }
    }
    Ohne einen Context funktioniert ein View nicht.
    Ja, den musst du übergeben und weiterreichen.

    regards
     
  3. NutCrisp, 16.03.2011 #3
    NutCrisp

    NutCrisp Threadstarter Neuer Benutzer

    Danke habe ich mir schon gedacht.

    Kann ich dann die Klasse MyImageButton auch in den Layout-Dateien benutzen, also z.B:
    Code:
    <!-- z.B. main.xml -->
    <MyImageButton 
        android:id="@+id/MyId" 
        type="niceButton"
        ...
    >
    </MyImageButton>
    
    wobei type ein Attribut der Klasse MyImageButton ist? Oder muss ich den Attributen in der Activity "nachträglich" Werte zuweisen?

    Grüße
     
  4. DieGoldeneMitte, 16.03.2011 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Eigene Attribute werden über eigene Namespaces definiert.

    Im layout:
    Code:
    <LinearLayout
       ...
       xmlns:mib="http://meine.domain/android/meinschema"
    >
    <MyImageButton 
        android:id="@+id/MyId" 
        mib:type="niceButton"
        ...
    >
    </MyImageButton>
    
    Und dann aus dem Attributeset wie folgt herausgezogen:
    Code:
    public MyImageButton {
       public final String SCHEMA = "http://meine.domain/android/meinschema";
       String type;
       public MyImageButton( Context context, AttributeSet attrs ) {
          super(content,attrs); // EDIT to ADD
          type = attrs.getAttributeValue(SCHEMA, "type", "default");
       }
    
    Es steht dir natürlich frei, schöne getter und setter für deine Attribute zu machen.
     
    Zuletzt bearbeitet: 16.03.2011
  5. NutCrisp, 16.03.2011 #5
    NutCrisp

    NutCrisp Threadstarter Neuer Benutzer

    Danke.

    Mal sehen welche Variante ordentlicher ist.
     

Diese Seite empfehlen