Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ



Documentos relacionados
Programação para Dispositivos Móveis

Módulo 4 - Interface Gráfica Gerenciadores de Layout. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Programação de Dispositivos Móveis

Android Banco de Dados. Ivan Nicoli

Módulo 3 - Intenções. SECAP 2014 Prof. Rone Ilídio - UFSJ

Programação para Dispositivos Móveis

Programação para Android. Aula 10: Acesso a câmera, sms e recursos do aparelho

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Programação para Android. Aula 06: Activity, menus e action bar

Programação para Android. Aula 08: Persistência de dados SQL

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

Google Android. Intents

Programação de Dispositivos Móveis

Prof. Jhonatan Fernando

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Provedores de Conteúdo

Android Activity. Ivan Nicoli

Programa de Dispositivos Móveis

Comunicação entre A0vidades

Computação Móvel Activity (Ref. Cap. 4)

Definições de Projeto

Introdução ao Desenvolvimento para Sistema Operacional Android

Desenvolvimento para Android Prá3ca 3. Prof. Markus Endler

Log, Ciclo de Vida e Diálogos. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Desenvolvimento Android.

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Android Layout Manager. Ivan Nicoli

Programa de Dispositivos Móveis

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Tutorial Android Speech

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Desenvolvimento com Android Studio. Aula 02 Widgets, Manipulação de Dados e Programação de Eventos

Introdução à Programação Android

Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Android Binding. Implementando o padrão de projeto MVVM com MVVM_. Saiba como criar um projeto utilizando o padrão de projeto MVVM no Android

ANDROID APPLICATION PROJECT

Android e Facebook. Felipe Silveira

ESPECIFICAÇÃO TÉCNICA CIELO MOBILE CHAMADA EXTERNA. Maio de 2015

============================== Exemplo ListView MainActivity.java

ESPECIFICAÇÃO TÉCNICA CIELO MOBILE CAIXA RÁPIDO. Julho de 2015

Programação para Dispositivos Móveis. Banco de Dados (SQLite)

Introdução ao Android

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

Capítulo 07: Câmera e Arquivos

Computação Móvel Conceitos Básicos do Android Ref. Capítulo 3

Android DEFINIÇÕES E CICLO DE VIDA. Prof. Dr. Joaquim assunção.

Google Android. Broadcast Receiver

Capítulo 04: Persistência com SQLite

Android: Ciclo de vida da Activity

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis. Activity e Intent

HCI Summer Workshop. Android #1. Tiago Guerreiro.

Programação para a Plataforma Android Aula 7. Mul$mídia

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Escrito por Lisiane Batista Neitzke Qui, 29 de Dezembro de :24 - Última atualização Seg, 16 de Janeiro de :41

TELA PRINCIPAL DO PROJETO FCV

Android Básico Hello World!

Interfaces Gráficas parte 3

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

CONTEÚDO (técnico) COMPLETO DO TREINAMENTO INTENSIVO PARA ANDROID Universidade Android

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

AULA 2. Minicurso PET-EE UFRN

Programação para a Plataforma Android Aula 11. Banco de Dados

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Programa de Dispositivos Móveis

Capítulo 05: Menus de Contexto

Introdução ao Android

Desenvolvimento de um aplicativo básico usando o Google Android

Computação II Orientação a Objetos

Introdução ao Android SDK. Prof. Me. Hélio Esperidião

itec h- ON & E ngenharia de S oftware Joel Carvalho - 05/05/2011 Novas Tecnologias Aplicadas à Eng. de So5.

Capítulo 7. Sequenciamento das Tarefas

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai, Diogo Carleto, erodrigo Cascarrolho

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Exemplo de Aplicaça o Facebook

O que é o Android? O que é o Android

Manual do Contribuidor. Portal de Internet. Projeto: Novo Portal de internet

Armazenamento Persistente de Dados

Google. Ricardo R. Lecheta. Aprenda a criar aplicações para dispositivos móveis com o Android SDK. Novatec

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Capítulo 06: Trabalhando com Intents

Transcrição:

Módulo 2 - Novas Activities Android Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Inserindo a segunda activity Para inserir uma nova activity basta clicar com o botão direito sobre o pacote, novo, outros, Activity. Essa operação corresponde a: Inserir uma nova classe no pacote Inserir um novo arquivo xml no em res\layout Associar o xml à nova classe Dentro do método oncreate da nova classe inserir: setcontentview(r.layout.nome_do_xml); Modificar o arquivo AndroidManifest.xml acrescentando uma tag para a nova activity, ex: <activity android:name=".nomeactivity" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity>

Inserindo a segunda activity AndroidManifest.xml <activity android:name=".nomeactivity" >... Definições da activity... <activity> NomeActivity = nome da classe <intent-filter>... Definições de execução <\intent-filter> <action android:name="android.intent.action.main" />: activity pode ser inicializada individualmente <category android:name="android.intent.category.launcher" />: activity pode ser um icone e aparecer junto com as outras aplicações

Chamando outra activity Dois métodos startactivity startactivityforresult startactivity (intent) Inicia a Activity sem vínculo StartActivityForResult(intent, codigo) Inicia uma Activity e espera por um retorno Deve-se dar um código para cada chamada

Exemplo 1 startactivity Crie as interfaces gráficas Primeira Activity Segunda Activity

Exemplo 1 startactivity Primeira Activity public class MainActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Handler obj = new Handler(); Button btn = (Button) findviewbyid(r.id.button1); btn.setonclicklistener(obj); public class Handler implements OnClickListener{ public void onclick(view v){ if(v.getid() == R.id.button1){ Intent intent = new Intent(v.getContext(),SegundaActivity.class); startactivity(intent);

Exemplo 1 startactivity O objeto da classe Intent será explicado posteriormente Ele é o núcleo do sistema Android Todas as execuções dependem dessa classe Intent intent; intent = new Intent(v.getContext(),SegundaActivity.class); SegundaActivity.class: nome da Activity que será executada

Exemplo 2 startactivityforresult Crie as interfaces gráficas Primeira Activity Segunda Activity MainActivity.class e main_activity.xml SegundaActivity.class e activity_segunda.xml

1ª Activity public class MainActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Handler obj = new Handler(); Button btn = (Button) findviewbyid(r.id.button1); btn.setonclicklistener(obj); public void onactivityresult(int requestcode, int resultcode, Intent data) { CharSequence x = data.getcharsequenceextra("name"); Toast.makeText(this, x +, requestcode:"+requestcode+ " resultcode:"+resultcode, Toast.LENGTH_LONG).show(); public class Handler implements OnClickListener{ public void onclick(view v){ if(v.getid() == R.id.button1){ Intent intent = new Intent(v.getContext(),SegundaActivity.class); startactivityforresult(intent,0);

2ª Activity public class SegundaActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_segunda); Handler obj=new Handler(); Button btn = (Button)findViewById(R.id.btnSegunda); btn.setonclicklistener(obj); public class Handler implements OnClickListener{ public void onclick(view v){ if(v.getid() == R.id.btnSegunda){ Intent intent = new Intent(); intent.putextra("name", "ok"); setresult(10, intent); finish();

Exemplo 2 startactivityforresult startactivityforresult(intent,0): zero é o código de requisição da activity onactivityresult: método chamado após a conclusão da segunda Activity» requestcode: código de requisição (no caso 0)» resultcode: código de retorno (no caso 10)» Intent data: intent para execução da primeira activity Toast.makeText: equivalente ao JOptionPane» Toast.makeText(this, string, Toast.LENGTH_LONG).show(); String: dado exibido Toast.LENGTH_LONG: tempo de exibição

Informações entre Activities Uma forma simples de compartilhar dados entre duas ou mais Activities é utilizando o padrão Singleton Como exemplo, crie a seguinte classe: public class Dados { public static Vector v; public static Vector getinstance(){ if(v == null) v = new Vector (); return v; Todas as Activities terão acesso ao vetor da seguinte forma: Vector a = Dados.getInstance();

Exemplo - Informações entre Activities Crie as seguintes interfaces: MainActivity.java e activity_main.xml ExibirActivity.java e activity_exibir.xml

Exemplo - Informações entre Activities Crie a classe Dado.java public class Dado { public static String nome; public static String email; Observe que os atributos são static

MainActivity.java public class MainActivity extends Activity implements OnClickListener{ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button btn = (Button) findviewbyid(r.id.button1); btn.setonclicklistener(this); public void onclick(view v) { EditText tvnome = (EditText)findViewById(R.id.editText1); EditText tvemail = (EditText)findViewById(R.id.editText2); Dado.nome = tvnome.gettext().tostring(); Dado.email = tvemail.gettext().tostring(); Intent intent = new Intent(v.getContext(),ExibirActivity.class); startactivity(intent);

ExibirActivity.java public class ExibirActivity extends Activity{ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_exibir); TextView tv1 = (TextView)findViewById(R.id.textView1); tv1.settext(dado.email); TextView tv2 = (TextView)findViewById(R.id.textView2); tv2.settext(dado.nome);

Informações entre activities usando Bundle Objetos da classe Bundle são utilizados por Intents para passar informações entre Activities Bundle possui métodos para cada tipo de dados, exemplo: putstring(key,string) onde key identifica a string putdouble(key,double) putint(key,int) O método putextras(bundle) da classe Intent recebe o Bundle que será enviado para outra Activity

Informações entre activities usando Bundle Para enviar os dados para a segunda Activity Intent intent = new Intent(v.getContext(),ExibirActivity.class); Bundle params = new Bundle(); params.putstring( chave1", etnome.gettext().tostring()); intent.putextras(params); startactivity(intent);

Informações entre activities usando Bundle Para receber dentro da segunda Activity String str= ; Intent it = getintent(); if(it!= null){ Bundle params = it.getextras(); if(params!= null){ str = params.getstring( chave");

Informações entre activities usando Bundle Crie as seguintes interfaces: MainActivity.java e activity_main.xml ExibirActivity.java e activity_exibir.xml

public class MainActivity extends Activity implements OnClickListener{ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button btn = (Button)findViewById(R.id.button1); btn.setonclicklistener(this); public void onclick(view v){ if(v.getid()==r.id.button1){ EditText etnome = (EditText)findViewById(R.id.editText1); EditText etemail = (EditText)findViewById(R.id.editText2); Intent intent = new Intent(v.getContext(),ExibirActivity.class); Bundle params = new Bundle(); params.putstring("nome", etnome.gettext().tostring()); params.putstring("email", etemail.gettext().tostring()); intent.putextras(params); startactivity(intent);

public class ExibirActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_exibir); String nome=""; String email=""; Intent it = getintent(); if(it!= null){ Bundle params = it.getextras(); if(params!= null){ nome = params.getstring("nome"); email = params.getstring("email"); TextView tvnome = (TextView)findViewById(R.id.textView1); tvnome.settext(nome); TextView tvemail = (TextView) findviewbyid(r.id.textview2); tvemail.settext(email);

ListActivity ListActivity: filha de Activity Criada para manipular uma tela que contenha uma ListView A ListView deve-se chamar @android:id/list A ListView recebe um ArrayAdapter para exibir uma lista contendo seus elementos

ListActivity - Exemplo Crie a interface MainActivity.java e activity_main.xml ExibirActivity.java e activity_exibir.xml Obs: o nome do listview deve ser android:id="@android:id/list Modifique isso no xml

public class MainActivity extends Activity implements OnClickListener{ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button btncadastro = (Button)findViewById(R.id.button1); btncadastro.setonclicklistener(this); Button btnexibir = (Button)findViewById(R.id.button2); btnexibir.setonclicklistener(this); public void onclick(view v){ if(v.getid() == R.id.button1){ EditText e = (EditText)findViewById(R.id.editText1); Dados.v.add(e.getText().toString()); if(v.getid() == R.id.button2){ Intent intent = new Intent(v.getContext(),ExibirActivity.class); startactivityforresult(intent, 0);

public class ExibirActivity extends ListActivity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_exibir); String v[] = new String[Dados.v.size()]; for(int i=0;i<dados.v.size();i++){ v[i] = Dados.v.get(i); ArrayAdapter<String> meuarray = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,v); setlistadapter(meuarray); public void onlistitemclick(listview l, View v, int position, long id){ String text = this.getlistadapter().getitem(position).tostring(); Toast.makeText(this, text, Toast.LENGTH_LONG);

ListActivity Os dados a serem inseridos na lista deve estar dentro de um ArrayAdapter R.layout.simple_list_item_1: define uma lista simples O método onlistitemclick é chamado ao clicar um item da lista O métodos setlistadapter é implementado em ListActivity, ele insere um ArrayAdapter na lista

Método finish() O Android possui uma pilha de Activities em execução (activity stack) A Activity do topo está sendo exibida na tela O método startactivity() coloca outra Activity no topo O método finish() destrói a Activity do topo e a segunda passa a ser executada.

Exibindo a lista de contatos do telefone Primeiramente insira contatos na lista do emulador: Entre no aplicativo Contacts Clique em MENU New Contact Insira alguns contatos

Exibindo a lista de contatos do telefone Modifique o AndroidManifest.xml Insira a permissão de utilização da lista de contados Para todo recurso utilizado pela aplicação (como GPS, câmera, acesso à internet) o AndroidManifest deve conter a permissão. Veja código do AndroidManifest.xml: destaque para a permissão

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="rone.contatos" android:versioncode="1" android:versionname="1.0" > <uses-permission android:name="android.permission.read_contacts" /> <uses-sdk android:minsdkversion="8" android:targetsdkversion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name=".mainactivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

Exibindo a lista de contatos do Para ler os contatos telefone <uses-permission android:name = "android.permission.read_contacts" /> Para alterar/excluir/inserir contatos; <uses-permission android:name = "android.permission.write_contacts" />

Exibindo a lista de contatos do telefone Crie uma nova aplicação MainActivity.java activity_main.xml Insira um ListView no layout (activity_main.xml) Mude o nome do ListView para @android:id/list Veja o código da ActivityMain.java

public class MainActivity extends ListActivity { private ListAdapter adaptador; @SuppressWarnings("deprecation") @Override public void oncreate(bundle icicle) { super.oncreate(icicle); Uri uri = ContactsContract.Contacts.CONTENT_URI; Cursor c = getcontentresolver().query(uri, null, null, null, null); startmanagingcursor(c); String[] colunas = new String[]{ContactsContract.Contacts.DISPLAY_NAME; int campos[] = new int[]{r.id.nome; adaptador = new SimpleCursorAdapter(this,R.layout.activity_main,c,colunas,campos); setlistadapter(adaptador); protected void onlistitemclick(listview l, View v, int position, long id){ super.onlistitemclick(l, v, position, id); Cursor c= (Cursor) adaptador.getitem(position); String nomecoluna = ContactsContract.Contacts.DISPLAY_NAME; String nome = c.getstring(c.getcolumnindexorthrow(nomecoluna)); Toast.makeText(this, "contato selecionado: " + nome, Toast.LENGTH_LONG).show();