2011-03-17 3 views
0

Désolé, je suis un débutant à Java et Android ...Utiliser Child Dans Android

J'ai fait une application qui a une grande activité principale, je suis désireux de le diviser en quelque enfant cours pour rendre les choses plus faciles à lire, modifier, etc.

de ma principale classe I (pense) Je suis instanciation et appeler la classe des enfants, à l'intérieur onResume:

SetupButtons SetupButtonsObject = new SetupButtons(); 
      SetupButtonsObject.buildthem(); 

et dans la classe enfant I faire:

 class SetupButtons extends main { 

    void buildthem(){ 
//a load of things to setup buttons 
} 

} 

Le code que j'utilise dans buildthem() fonctionne correctement lorsqu'il est utilisé dans la classe principale, mais donne une exception nullpointer lorsqu'il est utilisé dans la classe enfant. Dois-je transmettre le contexte principal à l'enfant ou quelque chose comme ça?

Merci beaucoup Tom

Répondre

0

La classe Activity n'est pas censé être instancié par le développeur directement, laissez ce travail à l'androïde. Si vous souhaitez le diviser, pourquoi étendez-vous votre activité principale? Vous avez plutôt besoin de diviser votre application en parties logiques, comme l'a dit Nanne.

+0

Je ne pense pas que j'instancie l'activité suis-je? J'essaie de le diviser en parties logiques ... Je pensais que l'utilisation de classes d'enfants serait un bon moyen. Sûrement si je voulais utiliser les variables de l'activité principale, je dois l'étendre? –

+0

Je ne suis pas sûr parce que je ne peux pas voir votre code, mais 'class SetupButtons extends main' et vous avez parlé de votre activité principale, donc j'ai décidé que le' main' ici est votre activité principale. Si vous voulez utiliser les variables de l'activité principale, vous pouvez les passer en paramètre à vos constructeurs de classes "parties logiques". – ernazm

0

En même classe, vous pouvez appeler cette méthode directement. Comme buildthem();

1

Tout ce que vous utilisez dans la classe enfant qui n'est pas défini ici, mais qui est défini dans la classe principale, vous devez en quelque sorte obtenir de la classe principale. Donc oui, vous avez besoin de contexte.

Mais avant de faire cela: vous pourriez vouloir diviser votre application en classes qui sont des parties logiques de votre solution, comme vous pouvez le lire dans n'importe quelle description de POO. Donc, pas seulement le couper en morceaux parce qu'il le rend plus petit, hachez-le en unités logiques qui sont de bons objets réels.

Un type rapide, j'espère que je n'ai fait aucune erreur ici, mais voir les commentaires dans la classe enfant.

class Parent{ 
    public static int foo = 1; 
    public static int bar = 0; 

    public function somefunction(){ 
     bar = 1; 
     myChild = new Child(); 
    } 

} 

class Child extends Parent{ 
    //you can find foo = 1 
    //but not bar = 0; 
} 
+0

Merci, Toutes les variables que j'utilise dans l'enfant sont définies dans la classe principale comme définie comme public static.So j'ai pensé à travers l'héritage, ils devraient être accessibles par l'enfant? –

+0

a ajouté un exemple – Nanne

+0

Merci. J'ai fait d'autres tests en simplifiant le code dans ma classe enfant. Il semble que les variables sont bien accessibles et peuvent être mises à jour à partir de la classe enfant. C'est findviewbyID du bouton, qui est utilisé dans l'enfant qui semble être le problème. –