Em um aplicativo Android, como você inicia uma nova atividade (GUI) quando um botão em outra atividade é clicado e como você passa dados entre essas duas atividades?
626
Em um aplicativo Android, como você inicia uma nova atividade (GUI) quando um botão em outra atividade é clicado e como você passa dados entre essas duas atividades?
Fácil.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Os extras são recuperados do outro lado via:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Não se esqueça de adicionar sua nova atividade no AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
estartActivity(myIntent)
?Crie uma intenção para uma atividade ViewPerson e passe o PersonID (para uma pesquisa no banco de dados, por exemplo).
Então, no ViewPerson Activity, você pode obter o pacote de dados extras, garantir que não seja nulo (caso, às vezes, não passe dados) e obter os dados.
Agora, se você precisar compartilhar dados entre duas atividades, também poderá ter um Global Singleton.
Em seguida, chame-o em qualquer atividade:
fonte
As respostas atuais são ótimas, mas é necessária uma resposta mais abrangente para iniciantes. Existem três maneiras diferentes de iniciar uma nova atividade no Android, e todas elas usam a
Intent
classe; Intenção Desenvolvedores Android .onClick
atributo do botão. (Principiante)OnClickListener()
via uma classe anônima. (Intermediário)switch
instrução (Pró)Aqui está o link para o meu exemplo, se você quiser acompanhar:
1. Usando o
onClick
atributo do botão. (Principiante)Os botões têm um
onClick
atributo encontrado no arquivo .xml:Na classe Java:
Vantagem : Fácil de fazer em tempo real, modular e pode facilmente definir vários
onClick
s com a mesma intenção.Desvantagem : Legibilidade difícil ao revisar.
2. Atribuindo um
OnClickListener()
via uma classe anônima. (Intermediário)É quando você define um separado
setOnClickListener()
para cada umbutton
e substitui cada umonClick()
com sua própria intenção.Na classe Java:
Vantagem : Fácil de fazer em tempo real.
Desvantagem : haverá muitas classes anônimas que dificultarão a legibilidade ao revisar.
3. Método de interface ampla da atividade usando a
switch
instrução (Pró)É quando você usa uma
switch
instrução para seus botões noonClick()
método para gerenciar todos os botões da Atividade.Na classe Java:
Vantagem : Gerenciamento fácil de botões, pois todas as intenções dos botões são registradas em um único
onClick()
métodoPara a segunda parte da pergunta, transmitindo dados, consulte Como transmito dados entre Atividades no aplicativo Android?
fonte
Quando o usuário clica no botão, diretamente dentro do XML assim:
Usando o atributo
android:onClick
, declaramos o nome do método que deve estar presente na atividade pai. Então eu tenho que criar esse método dentro da nossa atividade assim:fonte
fonte
fonte
Emmanuel,
Acho que as informações extras devem ser colocadas antes de iniciar a atividade, caso contrário, os dados ainda não estarão disponíveis se você os estiver acessando no método onCreate de NextActivity.
fonte
Na atividade de envio, tente o seguinte código
Na atividade de recebimento, tente o seguinte código:
Em seguida, basta adicionar o seguinte código ao arquivo AndroidManifest.xml
fonte
fonte
Tente este método simples.
fonte
Você pode tentar este código:
fonte
A maneira de iniciar novas atividades é transmitir uma intenção e existe um tipo específico de intenção que você pode usar para passar dados de uma atividade para outra. Minha recomendação é que você verifique os documentos do desenvolvedor do Android relacionados às intenções ; é uma riqueza de informações sobre o assunto e também tem exemplos.
fonte
Kotlin
Primeira atividade
Segunda atividade
Sugestão
Sempre coloque as chaves em um arquivo constante para uma maneira mais gerenciada.
fonte
Iniciar uma atividade de outra atividade é um cenário muito comum entre aplicativos Android.
Para iniciar uma atividade, você precisa de um objeto Intent .
Como criar objetos de intenção?
Um objeto de intenção recebe dois parâmetros em seu construtor
Assim, por exemplo, se você tiver duas atividades, dizer
HomeActivity
eDetailActivity
e você quer começarDetailActivity
a partir deHomeActivity
(HomeActivity -> DetailActivity).Aqui está o trecho de código que mostra como iniciar o DetailActivity a partir de
E você terminou.
fonte
Inicie outra atividade a partir dessa atividade e você também pode passar parâmetros via Bundle Object.
Recuperar dados em outra atividade (YourActivity)
fonte
Implemente a interface View.OnClickListener e substitua o método onClick.
fonte
Embora as respostas adequadas já tenham sido fornecidas, estou aqui para procurar a resposta no idioma Kotlin. Esta pergunta não é específica do idioma, por isso estou adicionando o código para realizar esta tarefa no idioma Kotlin.
Aqui está como você faz isso no Kotlin para o andorid
fonte
A maneira mais simples de abrir a atividade ao clicar no botão é:
onclick
função.MainActivity.java
SecondActivity.java
AndroidManifest.xml (basta adicionar este bloco de código ao existente)
fonte
Pegue o botão em xml primeiro.
Faça o listner do botão.
fonte
Quando o botão é clicado:
Para receber os dados extras de
NextActivity.class
:fonte
Escreva o código em sua primeira atividade.
Em secondActivity.class
fonte
Coloque o widget de botão no xml como abaixo
Depois disso, inicialize e manipule o ouvinte de clique em Activity, como abaixo.
No método Activity On Create:
fonte