2017-06-29 1 views
0

Lorsque vous appuyez sur le bouton "Retour" de l'appareil sur un fragment spécifique, je veux alerter l'utilisateur et les laisser décider de cacher l'application ou de rester. Ici, le segment de code:comment appeler une méthode de superclasse d'une activité dans alertDialog (studio Android)

@Override 
public void onBackPressed() { 
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.container); 
    if(f instanceof PlanListFragment){ 
     builder.setPositiveButton(R.string.alert_Cancel, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // Do nothing 
      } 
     }); 
     builder.setNegativeButton(R.string.alert_OK, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // I want to call this: **super.onBackPressed()**; but super is not recognized at all here. 
      } 
     }); 

     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    }else{ 
     super.onBackPressed(); 
    } 
} 

Comme commenté ci-dessus, comment puis-je appeler cette méthode "supper.onBackPressed()" en cliquant sur le bouton "Ok"?

Merci d'avance!

Shawn

+0

Donc, vous voulez fermer la boîte de dialogue et fermer l'activité lorsque l'utilisateur appuie sur "ok". –

Répondre

0

super.onBackPressed ne reconnaît pas parce que vous êtes construit actuellement un DialogInterface.OnClickListener. Vous pouvez simplement déclarer une variable myActivity avant de construire le dit listener et appeler onBack sur celui-ci.

Activity activity = this; 
builder.setNegativeButton... 
{ 
     ... 
     activity.onBackPressed(); 
     ... 
} 

Remplacer "Activité" avec tout ce Fragment vous êtes.

// Mise à jour

peut écrire une nouvelle méthode qui fait l'appel super.onBackPressed().

+0

onBackPressed() est déjà dans MyActivity. ce dont j'ai besoin c'est de trouver un moyen d'obtenir sa super classe, quelque chose comme: Activity super_activity = this.supper; J'ai essayé ceci: Activité super_activity = this.getParent(); mais super_activity est nul. – Shawn

+0

Je pense que vous pouvez définir le parent comme ceci dans votre manifeste: [Providing Up Navigation] (https://developer.android.com/training/implementing-navigation/ancestral.html) Je ne suis pas sûr si c'est ce que vous cherchez/ce dont vous avez besoin ici. – DerDingens