Répondre

1

Tout dépend de quel type de données que vous souhaitez passer entre fragment ou fenêtre pop-up à l'activité d'une façon peut être en utilisant l'intention

//create an Intent object 
     Intent intent=new Intent(context, Activity.class); 
    //add data to the Intent object 
     intent.putExtra("text", "Data"); 
    //start the second activity 
     startActivity(intent); 

et pour recevoir les données d'intention utilisent

getIntent().getStringExtra("text") 

Une autre façon peut être d'utiliser des préférences partagées

SharedPreferences prefs = this.getSharedPreferences(
     "com.example.app", Context.MODE_PRIVATE); 

Pour lire prefe partitions: Chaîne dateTimeKey = "com.example.app.datetime";

// utiliser une valeur par défaut en utilisant la nouvelle date()

long l = prefs.getLong(dateTimeKey, new Date().getTime()); 

Pour modifier et sauvegarder vos préférences

Date dt = getSomeDate(); 
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply(); 
1
  1. Dans le fragment, créer une interface (appelons-le VariableCallback pour maintenant) avec une méthode de type de retour void qui prend dans un paramètre avec le même type que la variable que vous êtes generatin g. Appelons la méthode onVariableGenerated.
  2. Faites en sorte que l'activité hébergeant le fragment implémente cette interface. Créez un champ dans le fragment de type VariableCallback. Appelons-le callback.
  3. Remplacez la méthode onAttach(Context context) du fragment et définissez le champ pour qu'il pointe vers le contexte. Assurez-vous que place le contexte en VariableCallback.
  4. Maintenant, lorsque le fragment génère la variable, vous pouvez appeler callback.onVariableGenerated(myVariable), et qui passera la variable à l'activité qui héberge le fragment.
  5. Assurez-vous que remplace la méthode onDetach() du fragment pour définir le champ callback sur null. Cela empêchera une fuite de mémoire de l'activité.
+0

Qu'en est-il du cas alors l'information dans l'activité est nécessaire par le poupwindow ou le fragment? Can ((Activité) getActivity()). FunctionCall(); travaille ici? – kilokahn

0

Répondre à un peu tard, mais il y a une autre façon, vous pouvez le faire que je pouvais penser: Diffusions locales

Vous pouvez utiliser un gestionnaire LocalBroadcast et un BroadcastListener dans l'activité, et envoyer un LocalBroadcast de la popupWindow:

Dans l'activité principale vous pouvez faire:

LocalBroadcastManager localBroadcastManager = 
    LocalBroadcastManager.getInstance (getApplicationContext()); 

BroadcastReceiver popupdatareceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ... 
     // code to handle received data goes here 
     } 
    } 
}; 

localBroadcastManager.registerReceiver (popupdatareceiver, new IntentFilter ("popupdata")); 

de l'popupWindow vous pouvez envoyer une diffusion locale comme ceci:

Intent popupdataIntent = new Intent ("popupdata"); 
Bundle popupdataBundle = new Bundle(); 
... 
// now add your data to the Bundle here 
... 
popupdataIntent.putExtra ("popupdata", popupdataBundle); 

Pour envoyer les données à l'activité, vous auriez besoin d'initialiser une instance LocalBroadcastManager et déclencher une émission - ce qui pourrait être déclenchée par OnClickListener d'un bouton, ou par le OnDismissListener du popupWindow

LocalBroadcastManager newLocalBroadcastManager = 
    LocalBroadcastManager.getInstance (getApplicationContext()); 
newLocalBroadcastManager.sendBroadcast (popupdataIntent);