2010-11-21 18 views
3

C'est la même question que "comment puis-je récupérer des données du nouveau à l'ancien".Comment appeler startActivityForResult dans la classe initialisée à partir de layout: main.xml

Mais dans ma première activité, j'ai appelé setContentView(R.layout.main);. Il y a un dessin de surface sur la toile.

La seule méthode que je connais est d'appeler getContext() pour obtenir le contexte, puis appelez startActivity(). Mais je ne peux pas appeler startActivityForResult() du contexte que je reçois, il semble qu'il ne supporte pas, je dois l'appeler seulement dans ma classe d'activité.

Quelqu'un peut-il me donner une opinion?

EDIT:

Voici mon code:

public class gameView extends SurfaceView implements SurfaceHolder.Callback 
{ 
    public gameView(Context context, AttributeSet attrs) 
    { 
     //This is how I do : 
     Intent intent = new Intent(); 
     intent.setClass(getContext(), inputCharactorName.class); 
     getContext().startActivity(intent); 
     //This what I WANT to , but I don't know how 
     //Activity.startActivityForResult(null,FPS); 
     //I want to start the activity here; 
    } 
} 
+0

Je ne suis pas sûr que je comprends votre problème, mais essayez 'getApplicationContext()' – cristis

+0

Poster une code qui démontre le problème que vous avez, qui pourrait aider les gens à comprendre et à répondre (de la question, je ne sais pas ce que vous demandez, peut-être le code aidera). –

+0

J'utilise view.getContext() pour retourner le contexte de la vue. Mais il n'est pas possible d'appeler startActivityForResult(). Je ne sais pas pourquoi –

Répondre

7

Si vous êtes complètement sûr que getContext() est une instance d'un Activity alors vous pouvez faire:

((Activity)getContext()).startActivityForResult(intent, 0); 
+0

Merci, cela semble fonctionner, laissez-moi essayer. –

+0

Après avoir appelé startActivityForResult(), mon FPS tombe soudainement de 60 à 18, savez-vous pourquoi? –

+0

c'est le bogue de l'émulateur, après je l'ai testé sur le vrai périphérique, il disparaît, thx –

2

Quelqu'un peut-il me donner une opinion?

Appelez startActivityForResult() de votre activité. Ayez votre SurfaceView ou appelez une méthode sur votre activité qui déclenche l'appel à startActivityForResult().

+0

Mais le problème est que je ne sais pas comment l'appeler. Si savoir comment appeler, alors le problème est résolu. –

+0

Après avoir appelé startActivityForResult(), mon FPS tombe soudainement de 60 à 18, savez-vous pourquoi? –

+0

Je pense que la sous-activité ralentit mon activité principale. J'ai appelé la finition cependant, mais je ne sais pas pourquoi cela me ralentit –