DESENVOLVER PARA ANDROID: CHAMANDO ACTIVITY’S.
27/03/2011 7 Comentários
Por enquanto, nossos exemplos estão apenas chamando Toast’s. Mas nem só de Toast’s viverão as nossas aplicações: precisamos chamar outras Activity’s para tratar outras telas. Dessa forma, será possível navegar entre elas.
É bem simples: temos a Activity que controlará as ações da tela, e um novo AndroidXML que será a nova tela.
Em seguida, bastará fazer com que o clique no menu “Ir pra outra tela” chame o método startActivity(…), passando como argumento um Intent : uma intenção de ir para outra Activity. O Intent precisará receber o objeto de contexto atual(this) e a classe que controla a tela para onde queremos ir.
startActivity(new Intent(this, NovaActivity.class));
novapagina.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="@string/new_page" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout>
Fazendo um retrô da classe Main.java
public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String[] listaDeNomesASeremListados = {"Yuri","Adams","Chaves","Maia"}; ListView listView = (ListView) findViewById(R.id.lista); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listaDeNomesASeremListados); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(Main.this, "você clicou no evento de clique simples!", Toast.LENGTH_LONG).show(); } }); listView.setLongClickable(true); listView.setOnItemLongClickListener(new OnItemLongClickListener() { public boolean onItemLongClick(AdapterView<?> adapter, View view, int posicao, long id) { Toast.makeText(Main.this, "você clicou no evento de clique longo!", Toast.LENGTH_LONG).show(); return false;//toda chamada background continuar rodando se for false. } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem novo = menu.add(0,0,0,"Ir pra outra tela"); novo.setIcon(R.drawable.novo); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == 0){ startActivity(new Intent(Main.this, NovaPagina.class)); } return super.onOptionsItemSelected(item); } }
E NÃO esquecer de registrar a Activity no AndroidManifest.xml
<activity android:name=".NovaPagina" android:label="Nova Página"> </activity>
Só testar..
Muito bom… Minha aplicação estava dando problema sempre, em vários exemplos que vi, e o problema era porque não estava registrando a Activity no AndroidManifest.xml. Muito obrigado
Valeu cara, fico feliz por ter ajudado
Yuri seu blog esta muito bom, me deu uma base muito boa para montar meu helloworld.
Mas como sou newbie demorei um pouco para saber que tenho de importar os pacotes abaixo:
import android.widget.*;
import android.view.*;
Ou talvez faltou colocar alguma configuração antes.
Valew kara, estou fazendo todos seus posts.
Dimitri Vargas Figueiredo Guimarães
Valeu cara, fico feliz por ajudar.. Grande abraço..
Olá Yuri, seguinte o meu problema é que quando eu clico normal o toast apresenta corretamente:
você clicou no evento de clique simples!
mas quando eu faço o longClick aparece as duas mensagem
seguidas:
você clicou no evento de clique longo!
você clicou no evento de clique simples!
Teria como me dar um Help
abração.
Cara, tenta mudar o retorno do método onItemLongClick. Se eu não me engano o retorno está “FALSE”. Tu muda pra “TRUE”.
Não sei o motivo, mas quando o projeto que tu criou é mais recente que a versão 2.1, que é a versão desse tutorial, o comportamento desse método mudou.
Não tenho certeza se é isso mas tente ai e manda um retorno…
Blz? Abração cara, desculpe a demora por responder..
Isso mesmo é mudar pra TRUE mesmo… eu havia achado mas esqueci de mandar o post.
Mas muito obrigado mesmo
Capaz não esquenta não,,,
abração