Como posso enviar dados de uma atividade (intenção) para outra?
Eu uso esse código para enviar dados:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
android
android-intent
Adham
fonte
fonte
user.getUserAccountId()+""
pois isso criaria objetos desnecessários para ser coletado. Considere usarString.valueOf(user.getUserAccountId)
ouInteger.toString(user.getUserAccountId)
vez disso.Respostas:
Primeiro, obtenha a intenção que iniciou sua atividade usando o
getIntent()
método:Se seus dados extras estiverem representados como strings, você poderá usar
intent.getStringExtra(String name)
método No seu caso:fonte
getIntent().getStringExtra("id");
para obter a string idgetIntent()
método Eu atualizei a resposta.Na atividade de recebimento
fonte
getStringExtra?
null
, toda a busca de extras pode ser ignorada. Ao usargetStringExtra
, você basicamente altera para uma série deif(extras != null) { return extras.getString(name) }
. Um para cada um quegetStringExtra
você ligar. Esta opção irá verificarnull
uma vez e, se for o caso, não se incomodará em lerBundle
. Além disso,getStringExtra
provavelmente continuará perguntandogetExtras
internamente também. Então você simplesmente tem mais chamadas para funções.fonte
Adicionar
Definir dados
Adquirir dados
fonte
Em vez de inicializar outra nova intenção para receber os dados, faça o seguinte:
fonte
Se usado em um FragmentActivity, tente o seguinte:
A primeira página estende FragmentActivity
No fragmento, você só precisa ligar
getActivity()
primeiro,A segunda página estende o fragmento :
fonte
Se você estiver tentando obter dados extras em fragmentos, tente usar:
Coloque os dados usando:
Obtenha dados usando:
fonte
Você pode obter qualquer tipo de dados extras a partir da intenção , não importa se é um objeto ou sequência ou qualquer tipo de dado.
e a solução mais curta é:
fonte
** Colocar dados por intenção - **
** Obter dados por intenção - **
se enviarmos valor inteiro por Intent. quando devemos usar o 2º parâmetro 0 em getIntent (). getIntExtra ("instituteId", 0) caso contrário, não usamos 0, o Android me dá um erro.
fonte
Kotlin
Primeira atividade
Segunda atividade
Sugestão
Sempre coloque as chaves em um arquivo constante para uma maneira mais gerenciada.
fonte
Apenas uma sugestão:
Em vez de usar "id" ou "nome" em seu i.putExtra ("id" .....), sugiro, quando faz sentido, usar os campos padrão atuais que podem ser usados com putExtra (), ou seja, Intent.EXTRA_something.
Uma lista completa pode ser encontrada em Intent (Android Developers).
fonte
Podemos fazê-lo por meios simples:
Em FirstActivity:
Em SecondActivity:
fonte
Passe a intenção com valor na Primeira Atividade:
Receber intenção na segunda Atividade;
Geralmente, usamos dois métodos com a intenção de enviar o valor e obter o valor. Para enviar o valor que irá utilizar
intent.putExtra("key", Value);
e durante receber a intenção de outra atividade, vamos utilizarintent.getStringExtra("key");
para obter os dados de intenção comoString
ou usar algum outro método disponível para obter outros tipos de dados (Integer
,Boolean
, etc.). A chave pode ser qualquer palavra-chave para identificar o valor significa que valor você está compartilhando. Espero que funcione para você.fonte
Você também pode fazer assim
// colocar valor na intenção
// obtém valor da intenção
fonte
Obtendo diferentes tipos de extras a partir da intenção
Para acessar dados do Intent, você deve saber duas coisas.
Existem métodos diferentes na classe Intent para extrair diferentes tipos de tipos de dados. Se parece com isso
Portanto, se você souber o tipo de dados da sua varibale que você definiu em otherActivity, poderá usar o respectivo método.
Exemplo para recuperar String em sua atividade do Intent
Lista de diferentes variantes de métodos para diferentes dataType
Você pode ver a lista de métodos disponíveis na Documentação oficial de intenções .
fonte
fonte
Acabei de publicar uma resposta aqui que aborda esse tópico com mais detalhes, incluindo algumas alternativas.
Utiliza a API Vapor , uma nova estrutura Android inspirada em jQuery que escrevi para simplificar o desenvolvimento do Android. Confira o exemplo nessa resposta para saber como você pode passar dados facilmente entre as atividades.
Também demonstra
VaporIntent
, o que permite encadear chamadas de método e utilizar o.put(...)
método sobrecarregado :Você pode transmitir dados com facilidade por todo o aplicativo usando a API do Vapor , por isso espero que seja útil para você e outras pessoas durante o desenvolvimento do aplicativo.
fonte