Pregunta ¿Cómo obtengo datos adicionales del intento en Android?


¿Cómo puedo enviar datos de una actividad (intención) a otra?

Yo uso este código para enviar datos:

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


origen


Respuestas:


Primero, obtenga la intención que inició su actividad utilizando el getIntent() método:

Intent intent = getIntent();

Si sus datos adicionales se representan como cadenas, puede usar intent.getStringExtra(String name) método. En tu caso:

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

1016
2017-11-20 17:04



En la actividad de recepción

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



Agregar

Establecer datos

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

Obtener datos

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

23
2017-08-24 07:26



En lugar de inicializar otra intención nueva para recibir los datos, solo haga esto:

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

16
2018-05-14 14:53



Si se usa en FragmentActivity, intente esto:

La primera página se extiende FragmentActivity

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

En el fragmento, solo necesitas llamar getActivity() primero,

La segunda página se extiende Fragmento:

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

11
2017-07-28 22:36



Si está tratando de obtener datos adicionales en fragmentos, puede intentar usar:

Coloque los datos usando:

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

Obtener datos usando:

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



Sólo una sugerencia:

En lugar de usar "id" o "name" en su i.putExtra ("id" .....), sugeriría, cuando tenga sentido, el uso de los campos estándares actuales que se pueden usar con putExtra (), es decir, Intent.EXTRA_algo

Se puede encontrar una lista completa en Intención (Desarrolladores de Android).


1
2018-05-22 18:09



Podemos hacerlo por medios simples:

En FirstActivity:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);

En SecondActivity:

    try {
        Intent intent = getIntent();

        String uid = intent.getStringExtra("uid");
        String pwd = intent.getStringExtra("pwd");

    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStringExtra_EX", e + "");
    }

1
2018-05-15 10:29