android comment créer ma propre Activité et de l'étendre?
J'ai besoin de créer une classe de base qui s'étend Activity
qui n'certaines tâches courantes dans mon application et d'étendre mon activités d'elle,dans la forme suivante:
public BaseActivity s'étend de l'Activité{....}
public sous-Activité s'étend BaseActivity{...}
dans Activité j'ai besoin de donner de la valeur à certaines variables et les composants de l'INTERFACE utilisateur défini dans BaseActivity, j'ai peut-être besoin de définir une mise en page différente pour Activité selon certaines valeur de l'indicateur, aussi(dans Activité ) je veux exécuter asyncTask qui est définie dans BaseActivity.
est-ce possible? si oui, est-il un tutoriel qui peut vous aider?
je vous remercie à l'avance
Vous devez vous connecter pour publier un commentaire.
Exactement ce que vous essayez d'atteindre? Ayant deux activités différentes avec une interface utilisateur commune, sauf pour certaines variables, ou des parties de la mise en page?
Dans ce cas, je suggère d'avoir une base abstraite de l'activité, et deux sous-classes héritées. Vous définissez toutes les communes de comportement dans les activités de base, et ont des méthodes abstraites pour les différences, qui vous remplacer dans votre implémentations réelles.
Par exemple, pour deux activités à disposition différentes ressources:
Vous pouvez avoir beaucoup plus abstrait des méthodes, pour chaque bit vous voulez spécifiques à votre sous-classes.
De faire qui est, à mon avis, beaucoup mieux que d'avoir un béton sous-classe concrète de la superclasse: qui peut conduire à de nombreux problèmes et est généralement difficile à déboguer.
public class myClass extends BaseActivity
et de passer àpublic class myOtherClass extends BaseActivity
. Ce commutateur est inutilement l'exécution deonPause
Cette question a déjà de très bonnes réponses.
Cependant. ma réponse est pour ceux qui sont à la recherche pour certains d'exemple.
Voici l'intégralité de travail -> CODE
Nous ne faisons pas quelque chose de nouveau ici, c'est juste comme n'importe quel autre héritage scénario (Vous voulez un peu de comportement commun à plusieurs endroits, mais vous voulez écrire que le comportement qu'une seule fois).
AVANTAGE:
Il fournit une meilleure lisibilité du code, de la maintenabilité et de bla bla. Mais ne sont pas après ces -sociétale, Ils ne sont pas importantes pour vous si votre cerveau fonctionne comme une gazelle.
Nous sommes après la véritable puissance de l'héritage “CONTRÔLE”. (C'est ce qui se passe dans la vraie vie aussi. Parent de contrôle de l'enfant 🙂 ) .
Dans mon exemple, j'ai deux Activités MainActivity et OtherActivity.
Les deux Activités a une mise en page différente, mais je veux à la fois pour commencer avec un peu d'animation ou de certains message de bienvenue.
Notre première tâche est de trouver le comportement commun.
ici -> Démarrer l'Activité avec l'animation.
Nous avons trouvé de la commune de la “chose”, nous allons maintenant écrire que le comportement dans BaseClass (AnimationActivity).
MainActivity et OtherActivity héritera AnimationActivity.
De sorte que le code devrait ressembler à `
Cette approche de conception fournit un grand nombre de Contrôle et Flexibilité (PUISSANCE DE MODIFICATEUR).
1) de CONTRÔLE: de Conserver l'animation méthode onCreate()
Lorsque vous décidez que les Activités devraient être commencé avec l'Animation.
Gardez votre méthode onCreate(Bundle bundle) de la méthode. Maintenant, juste en changeant le modificateur, vous pouvez contrôler les Activités enfant.
Si vous gardez modificateur
finale: activités Enfant va commencer avec des parents Animation.
résumé: Enfant, les activités auront à donner leur propre animation.
aucun modificateur: activités Enfants peuvent avoir leur propre animation par des raisons impérieuses d'animation de la méthode, Sinon l'enfant aura du parent de l'animation.
2)Flexibilité: Ne pas conserver l'animation méthode onCreate()
Vous pouvez fournir à l'enfant des activités de la souplesse en ne gardant pas l'animation méthode onCreate(Bundle bundle).
Maintenant, les activités peuvent avoir la flexibilité d'avoir des parents Animation ou de leur propre animation ou pas d'animation à tous.
Espérons que cela aide.
Heureux d'apprentissage.
`
Oui, vous pouvez, vous devez juste garder à l'esprit la base de règles d'héritage. Vous allez hériter l'intérieur AsyncTask activité et les propriétés définies dans le BaseActivity, si vous les faites protégés au lieu de privé. De ce que je vois maintenant, je pense que vous devriez faire BaseActivity une classe abstraite, que seules les instances sap sera réellement utilisé.
Vous devriez commencer juste et de l'essayer, ça va venir et le travail plus facile que vous le pensez. Si vous rencontrez des problèmes, il suffit de demander.
J'ai trouvé un moyen plus facile de @Guillaume de la solution. Ensemble
ContentView
qu'une seule fois dans votreBaseActivity
et ne le placez pas dans les activités de l'étendre: