2013-07-16 7 views
0

J'ai un bouton de partage sur mon application. Lorsque vous cliquez sur le bouton de partage, une boîte de dialogue de partage s'ouvre avec une liste d'options de partage. Le probelm est quand je décide que je ne veux pas partager (lorsque la boîte de dialogue est ouverte) et appuyez sur le bouton de retour sur le téléphone, l'application se ferme ... comment puis-je résoudre ce problème ??? Je ne peux pas voir le problèmeL'application Android se ferme lorsque onBackPressed call

share.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      dbControl = new DatabaseControl(ScoreMenu.this); 
      dbControl.open(); 
      score = dbControl.fetchBestTime(); 
      dbControl.close(); 
      share(score); 
     } 
    }); 
} 

public void share(String score){ 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, ""); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, ""); 
    startActivity(Intent.createChooser(shareIntent, "")); 
} 

@Override 
public void onBackPressed() { 
    Intent goToMainScreen = new Intent(ScoreMenu.this, MainActivity.class); 
    if (android.os.Build.VERSION.SDK_INT >= 16) { 
     // Start activity with a custom animation 
     Bundle bundle_animation = ActivityOptions.makeCustomAnimation(ScoreMenu.this,  R.anim.slide_in_right, R.anim.slide_out_left).toBundle(); 
     startActivity(goToMainScreen, bundle_animation); 
    } 
    else {      
     startActivity(goToMainScreen); 
    } 
} 

Espoir vous pouvez aider ...

+0

Quelle est la trace de la pile de votre logcat? –

+0

pas d'erreurs enregistrées dans mon logcat –

Répondre

0

ferme comment? Voulez-vous dire qu'une autre activité vient au premier plan?

En général, le bouton Précédent affiche l'activité la plus récente en haut de la pile de tâches. S'il y a plus d'activités dans la pile, la suivante se place au premier plan. Si ne sont plus activités, le contrôle passe à la tâche précédente (l'application précédente). Si vous avez commencé à partir de chez vous, vous retournerez à la page d'accueil.

C'est ce qui se passe avec votre application. Puisque vous ne construisez pas votre propre pile de tâches qui retourne à votre application lorsque vous appelez startActivity() pour le sélecteur, vous lancez une nouvelle tâche. Lorsque vous revenez, vous quittez cette tâche pour revenir à la page d'accueil plutôt que de revenir à votre application.

+0

L'application se ferme totalement ... j'ai une intention qui commence onBackPressed mais il ne semble pas appeler cela ... –

0

Utilisez-vous

finish(); 

Après avoir appelé l'activité que vous êtes actuellement? (ScoreMenu je suppose.)

Cause finition(); tuerait l'activité du lanceur en démarrant le nouveau. Après avoir appelé startActivity inside (chaîne de caractères), la boîte de dialogue Partager s'affiche, n'est-ce pas?

+0

Salut MonkeyDroid! ... je ne suis pas appeler finish() partout dans mon activité –

0

À ce stade, si l'utilisateur appuie sur le bouton de retour, la boîte de dialogue devrait disparaître, et votre activité (ScoreMenu, je pense) sera à nouveau visible. C'est le comportement par défaut, et vous n'avez pas besoin de surcharger onBackPressed pour l'avoir.

+0

Hey, merci pour la réponse ... oui la boîte de dialogue de partage s'ouvre, j'ai enlevé la méthode onBackPressed et quand j'appuie sur le bouton de retour il ferme toujours l'application, pas d'erreurs ou de plantages dans le journal –

+0

Problème résolu ... dans mon manifeste que j'avais android: noHistory = "vrai" sur mon activité de menu score ... man im a noob! –