12
votes

Pas besoin d'enregistrer la classe d'activité de base dans le manifeste?

J'ai ma propre classe abstraite de base qui prolonge activité code>.

public abstract class BaseActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResourceId());
    }

    protected abstract int getLayoutResourceId();
}

public class Activity1 extends BaseActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // do extra stuff 
    }

    @Override
    protected int getLayoutResourceId() {
        return R.layout.layout_for_activity1;
    }
}


0 commentaires

3 Réponses :


16
votes

Selon les documents, le sur le manifeste:

déclare une activité (une sous-classe d'activité) qui implémente une partie de L'interface utilisateur visuelle de l'application. Toutes les activités doivent être représenté par des éléments dans le fichier manifeste. tout ce qui est non déclaré, le système ne sera jamais vu et ne sera jamais courir .

Pensez-y comme ceci comme suit: S'il y a une activité (toute classe qui étend activité ou une classe qui le prolonge) que vous allez accéder à un moment de votre application, il doit être déclaré dans le manifeste. Indépendamment de comment vous atteignez cette activité. Cela exclut les classes qui n'expriment que la classe mais vous ne pouvez pas atteindre directement.

Source


2 commentaires

Votre réponse un peu est trompeuse. Vous dites que c'est un fuseau horaire de ne pas enregistrer la base du manifeste, mais vous continuerez à ne pas l'enregistrer


Pas de soucis. Merci de clarifier :)



17
votes

vous ne devez pas enregistrer la classe de baseActivity dans Manifest parce que ce n'est pas celui que vous appelez l'intention de lancer.

Par exemple: P>

Intent i = new Intent(context, Activity1.class);
startActivity(i);


4 commentaires

^ Ceci. Sauf si vous envisagez de gérer la faiblesse de la base, il vous suffit d'enregistrer les activités qui l'extorent.


Oui, bien sûr ... Logiquement Concrete Les classes doivent être enregistrées.


C'était en fait moi, parce que j'ai mal compris la réponse au début désolé . Si vous éditez votre réponse (quelque chose que cela me permet de changer le vote) Je vous laisse voter puisque le vôtre était d'abord et valable aussi


Je pense que cliquer sur votre baisse vote (celui de la couleur orange) vous aiderait à voter



0
votes

Pas besoin d'enregistrer la classe de base dans Manifest car c'est une classe abstraite, nous ne pouvons pas faire un objet de classe abstraite, nous ne pouvons définir que ses méthodes et sa déclaration.


0 commentaires