Question Comment puis-je obtenir des données supplémentaires sur Android?


Comment puis-je envoyer des données d'une activité (intention) à une autre?

J'utilise ce code pour envoyer des données:

Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);

616
2017-11-20 16:59


origine


Réponses:


Tout d'abord, obtenez l'intention qui a démarré votre activité en utilisant getIntent() méthode:

Intent intent = getIntent();

Si vos données supplémentaires sont représentées sous forme de chaînes, vous pouvez utiliser intent.getStringExtra(String name) méthode. Dans ton cas:

String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");

1016
2017-11-20 17:04



Dans l'activité de réception

Bundle extras = getIntent().getExtras(); 
String userName;

if (extras != null) {
    userName = extras.getString("name");
    // and get whatever type user account id is
}

168
2017-11-20 17:12



//  How to send value using intent from one class to another class
//  class A(which will send data)
    Intent theIntent = new Intent(this, B.class);
    theIntent.putExtra("name", john);
    startActivity(theIntent);
//  How to get these values in another class
//  Class B
    Intent i= getIntent();
    i.getStringExtra("name");
//  if you log here i than you will get the value of i i.e. john

28
2017-11-29 13:33



Add-up

Définir les données

String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);

Obtenir des données

String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    value = bundle.getString("sample_name");
}

23
2017-08-24 07:26



Au lieu d'initialiser une autre nouvelle intention de recevoir les données, faites simplement ceci:

String id = getIntent().getStringExtra("id");

16
2018-05-14 14:53



Si utilisé dans un FragmentActivity, essayez ceci:

La première page s'étend FragmentActivity

Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);

Dans le fragment, vous avez juste besoin d'appeler getActivity() premier,

La deuxième page s'étend Fragment:

String receive = getActivity().getIntent().getExtras().getString("name");

11
2017-07-28 22:36



Si vous essayez d'obtenir des données supplémentaires dans des fragments, vous pouvez essayer d'utiliser:

Placez les données en utilisant:

Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);

Obtenir des données en utilisant:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


  getArguments().getInt(ARG_SECTION_NUMBER);
  getArguments().getString(ARG_SECTION_STRING);
  getArguments().getBoolean(ARG_SECTION_BOOL);
  getArguments().getChar(ARG_SECTION_CHAR);
  getArguments().getByte(ARG_SECTION_DATA);

}

6
2017-07-16 23:16



Juste une suggestion:

Au lieu d'utiliser "id" ou "name" dans votre i.putExtra ("id" ...), je suggérerais, quand cela a du sens, d'utiliser les champs standards actuels qui peuvent être utilisés avec putExtra (), ie Intent.EXTRA_something.

Une liste complète peut être trouvée à Intention (Développeurs Android).


1
2018-05-22 18:09