2010-06-22 7 views
2

J'ai fait un sujet peu pertinent dans ma dernière question, alors j'ouvre cette nouvelle question pour effacer ce que je veux vraiment. Désolé pour le dérangement.Activités Android synchrones

Je veux exécuter deux activités système (Android) l'une après l'autre dans l'ordre spécifique de mon activité principale. Comme nous le savons, startActivity est une opération asynchrone, donc je ne peux pas continuer sur une commande spécifique.

alors j'ai pensé que je devrais peut-être essayer de le faire avec dialogBox au milieu, mais aussi en exécutant une boîte de dialogue est un asynchrone. Maintenant, comme je l'ai dit, les activités que j'essaie de lancer sont des activités Android, donc je ne peux même pas les démarrer avec startActivityForResult (ou mybe je peux, mais je n'obtiens aucun résultat à mon activité principale). astuces comment pourrais-je gérer avec ce problème?

Certains code:

première activité:

 Intent intent = new Intent(); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.setAction(Settings.ACTION_APPLICATION_SETTINGS); 
     startActivity(intent);  

deuxième activité:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setDataAndType(Uri.fromFile(tmpPackageFile 
     .getAbsoluteFile()), 
     "application/vnd.android.package-archive"); 
startActivity(intent); 

comme vous pouvez le voir, je n'ai pas de l'accès à ces activités, je peux courir thire intentions de mon activité principale.

+1

Je suppose que vous lancez l'activité de paramètres parce que certains paramètres ne sont pas correctement définis pour votre activité? Pourquoi ne pouvez-vous pas simplement vérifier si ces paramètres sont corrects dans onResume()? – alexanderblom

+0

Que vouliez-vous dire dans onResume? Pourquoi devrais-je vérifier là-bas? – rayman

Répondre

2

Étant donné que vous ne pouvez pas exécuter 2 activités en même temps, démarrez la première, puis lancez la seconde une fois que la première est revenue.

Une façon de suivre ceci est d'utiliser la méthode startActivityForResult, elle devrait vous permettre de contrôler l'ordre dans lequel les activités sont créées.

+1

Ive essayé, ça n'a pas fonctionné .. onActivityResult ne jamais être invoqué dans mon activité d'appel .. (résultat mybe coz jamais renvoyé ??) !! – rayman

+0

Avez-vous essayé sans FLAG_ACTIVITY_NEW_TASK? Lecture sur la documentation, il semble que ce pourrait être le problème: http://developer.android.com/guide/topics/fundamentals.html#acttask –

1

Try this ...

Intent intent = new Intent(Settings.ACTION_APPLICATION_SETTINGS); 
       startActivityForResult(intent, 0); 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 

       // start the other activity 

      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
      } 
     } 
    } 
+0

merci, même que la réponse 1 – rayman

-1
public class MainActivity extends AppCompatActivity 

{ 
    String msg="Android"; 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.d(msg,"1:application created"); 

    } 

    protected void onStart() { 
     super.onStart(); 
     Log.d(msg,"2 The onStart() "); 
    } 
    protected void onResume() { 
     super.onResume(); 
     Log.d(msg, "3 The onResume() "); 
    } 
    protected void onPause() { 
     super.onPause(); 
     Log.d(msg, "4 The onPause() "); 
    } 
    protected void onStop() { 
     super.onStop(); 
     Log.d(msg, " 5 The onStop() "); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
     Log.d(msg, "6 The onDestroy()"); 
    } 

} 
+0

S'il vous plaît utiliser l'aperçu pour voir si votre code est en cours de mise en forme, et ajouter du texte, peut-être un devis avec un lien où l'utilisateur peut en savoir plus sur votre réponse, et mieux comprendre la réponse. –

Questions connexes