Passando um pacote em startActivity ()?

174

Qual é a maneira correta de passar um pacote para a atividade que está sendo iniciada a partir do atual? Propriedades compartilhadas?

yanchenko
fonte

Respostas:

425

Você tem poucas opções:

1) Use o pacote a partir da intenção :

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) Crie um novo pacote

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3) Use o método de atalho putExtra () do Intent

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);


Em seguida, na Atividade lançada, você os leria através de:

String value = getIntent().getExtras().getString(key)

NOTA: Os pacotes configuráveis ​​têm métodos "get" e "put" para todos os tipos primitivos, Parcelables e Serializables. Eu apenas usei Strings para fins de demonstração.

Jeremy Logan
fonte
20

Você pode usar o Bundle a partir do Intent:

Bundle extras = myIntent.getExtras();
extras.put*(info);

Ou um pacote inteiro:

myIntent.putExtras(myBundle);

É isso que você está procurando?

DustinB
fonte
1
E a partir da intenção resultante, você chama getIntent (). GetExtras (). Get * () para obter o que foi armazenado antes.
Yanchenko
16

Passando dados de uma atividade para outra no android

Uma intenção contém a ação e, opcionalmente, dados adicionais. Os dados podem ser passados ​​para outras atividades usando o putExtra()método intent . Os dados são passados ​​como extras e são key/value pairs. A chave é sempre uma String. Como valor, você pode usar os tipos de dados primitivos int, float, chars, etc. Também podemos passar Parceable and Serializableobjetos de uma atividade para outra.

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);

Recuperando dados do pacote da atividade do Android

Você pode recuperar as informações usando getData()métodos no objeto Intent. O objeto Intent pode ser recuperado por meio do getIntent()método

 Intent intent = getIntent();
  if (null != intent) { //Null Checking
    String StrData= intent.getStringExtra(KEY);
    int NoOfData = intent.getIntExtra(KEY, defaultValue);
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
    char charData = intent.getCharExtra(KEY, defaultValue); 
  }
IntelliJ Amiya
fonte
6

Você pode passar valores de uma atividade para outra usando o Bundle. Na sua atividade atual, crie um pacote configurável e defina o pacote configurável para o valor específico e passe esse pacote configurável para a intenção.

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

Agora em seu NewActivity, você pode obter esse pacote e recuperar seu valor.

Bundle bundle = getArguments();
String value = bundle.getString(key);

Você também pode passar dados através da intenção. Na sua atividade atual, defina a intenção dessa maneira,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

Agora em sua NewActivity, você pode obter esse valor de uma intenção como esta,

String value = getIntent().getExtras().getString(key);
Neha Mehta
fonte
Por que usar um pacote configurável enquanto o objeto de intenção possui os métodos getExtra e putExtra?
usar o seguinte
0

Escreva esta é a atividade em que você está:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

No NextActivity.java

Intent getIntent = getIntent();
//call a TextView object to set the string to
TextView text = (TextView)findViewById(R.id.textview_id);
text.setText(getIntent.getStringExtra("string_name"));

Isso funciona para mim, você pode tentar.

Fonte: https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/

trustidkid
fonte
0

você pode usar este código em sua primeira atividade :

 Intent i = new Intent(Context, your second activity.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

e obter objeto na segunda atividade :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
Pouria Hemati
fonte