2010-11-25 4 views
2

J'ai une sous-classe qui s'étend Dialog classe, il semble que je ne peux pas utiliser startActivity() fonction pour démarrer une nouvelle activité dans cette sous-classe qui s'étend Dialog classe, comment le résoudre? Comment démarrer une nouvelle activité dans une sous-classe Dialog?Comment démarrer Activity() dans une sous-classe de Dialog?

Comment démarrer une nouvelle activité dans une sous-classe Dialog? (Dans ma sous-classe de dialogue personnalisée, j'ai un bouton, une fois pressé, je voudrais avoir un nouveau démarrage d'activité).

Répondre

4

startActivity est une méthode de Context.

Vous pouvez récupérer le Context de votre Dialog en appelant le Dialog.getContext().

+0

Non, cela ne suffit pas. startActivity() ne peut être appelé qu'à l'intérieur d'une classe qui étend Activity, ma classe étend Dialog, et je veux démarrer StartActivity à côté de ce sous-classe de classe Dialog ... – Mellon

+0

'startActivity' est une méthode publique - que se passe-t-il lorsque vous essayez l'invoquer de 'Dialog'? (lorsque vous appelez 'getContext(). startActivity'?) –

1

Vous pouvez toujours appeler startActivity sur un contexte de non-activité, mais vous devez le lancer dans une nouvelle tâche en ajoutant l'indicateur FLAG_ACTIVITY_NEW_TASK. Ceci a quelques ramifications, donc je préfère essayer de mettre la main sur un Activity dans cette boîte de dialogue, par exemple en lançant la boîte de dialogue en utilisant une activité réelle, et non getApplicationContext() ou quelque chose comme ça.

Sinon, aucun dé.

Pour en savoir plus sur les tâches, voir http://developer.android.com/guide/topics/fundamentals.html#acttask

2

Puis-je voir où vous invoquez la boîte de dialogue? Je suppose que, dans une sorte d'activité, vous avez cette boîte de dialogue, et en fonction de la sélection, vous lancez une nouvelle activité. Si vous utilisiez des classes imbriquées, vous pouvez le faire en utilisant startActivity (currentClassName.this, targetClass.class), mais puisque vous avez votre propre boîte de dialogue d'extension de classe, j'essayerais d'inclure le contexte dans le constructeur pour la boîte de dialogue classer et lancer la nouvelle activité en fonction de cela, de cette façon, l'activité peut être lancée à partir de votre classe de dialogue, en utilisant son contexte d'activité "parent".

Je n'ai pas essayé cela, donc ça pourrait ne pas fonctionner, mais essayez-le.

donc de l'activité qui appelle la boîte de dialogue, il serait someting comme

MyDialog d = new MyDialog(currentClassName.this); 

l'intérieur de votre MyDialogClass:

public class MyDialog{ 
    private Context c; 

    public MyDialog(Context c){ 
     this.c=c; 
    } 

    public startActivityFromDialog(){ 
     startActivity(c,something.class); 
    } 
} 
Questions connexes