2015-10-26 5 views
0

Je veux ajouter un nouveau constructeur à ma vue personnalisée pour obtenir le paramètre. Ceci est mon cas:Ajouter un nouveau constructeur à la vue personnalisée android

variable dans une autre classe:

A<T> customView; 

"A" vue par exemple de classe personnalisée:

public class A<T extends B> extends ViewGroup { 

    private Class<T> requestClass; 
} 

Comment puis-je obtenir requestClass au moment de l'initialisation de mon point de vue?

Répondre

0

Vous pouvez utiliser une méthode statique à la place d'un constructeur.

public class A<T extends B> extends ViewGroup { 

    private Class<T> requestClass; 

    public static <T extends B> A<T> newInstance(Class<T> requestClass) { 
     A<T> instance = new A<>(); 
     instance.requestClass = requestClass; 
     return instance; 
    } 

    public A(){} 
} 

Dans votre autre classe:

A<BImpl> customView = A.newInstance(BImpl.class); 
+0

c'est une solution possible. Cependant, j'utilise cette vue en XML, donc je l'obtiens en utilisant findViewById. – user14570

+0

Faire 'A' étend' Fragment' et ajouter à votre mise en page en utilisant 'getSupportFragmentManager(). BeginTransaction(). Add' au lieu de l'obtenir en utilisant' findViewById'. –

+0

vous ne pouvez pas avoir par défaut aucun constructeur d'argument dans la classe ViewGroup –