Question

Est déclarant une classe qui étend l'activité dans une autre classe d'activité possible? Dans ce cas, comment pourrais-je inscrire cette classe dans le manifeste? Aussi, est-ce quelque chose qui peut être raisonnablement fait ou est-ce une mauvaise idée?

Je pensais à quelque chose comme

class ListClass extends ListActivity{

    ...
    ArrayList items;

    class ItemClass extends Activity{

        ...
        Item item;

        @Override
        onCreate(){
            Integer pos = getIntent().getExtras().getInt("pos");
            item = items.get(pos);
        }
    }

    @Override
    onItemClick(int position){

        startActivity(new Intent(this, ItemClass.class).putExtra("pos", position));

    }
}

Notez la syntaxe n'est pas 100% correct évidemment, la plupart du temps pseudocode.

Était-ce utile?

La solution

Non, ce n'est pas possible. Après tout, le système d'exploitation Android devra instancier l'activité si elle est lancée à tout moment (par exemple, si vous commencez à travers une intention), et il est impossible d'instancier un ItemClass sans ListClass parent.

Rappelez-vous que chaque activité est complètement indépendant et peut être démarré à tout moment par une intention.

Autres conseils

Oui, il fonctionne - il est juste une autre classe - il vous suffit de déclarer votre activité en utilisant la notation de classe interne dans AndroidManifest.xml:

  

semble fonctionner très bien pour moi, mais peut-être quand cette question a été posée, il n'a pas été pris en charge dans les anciennes versions d'Android?

Je ne sais pas pourquoi vous voulez faire cela, mais vous pouvez.

Je serais également curieux de savoir pourquoi vous voudriez faire.

Cependant, je ne vois aucune raison pour laquelle cela ne fonctionnerait pas. Ne pourriez-vous faire référence dans le AndroidManifest comme vous le feriez normalement aussi longtemps que les deux classes sont publiques? à-dire com.falmarri.ListClass.ItemClass?

Edit:. Nevermind cela ne fonctionne pas comme EboMike a souligné

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top