Olá galera, há algumas semanas pedi um tutorial de como programar pra Android, já que o livro que eu tinha era uma grande porcaria, e realmente os tutoriais do próprio site do Android me ajudaram, mas fiquei com dúvida em algumas coisas (Irei marca-las com // "comentário)
[code]package nome.teste;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "nome.teste.MESSAGE";
public final static String EXTRA_MESSAGE1 = "nome.teste.MESSAGE1";
@Override
protected void onCreate(Bundle savedInstanceState) //Evento ao ser iniciado o programa?
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) //Menu de que?
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void limpardados(View view) //Para o que o uso do view?
{
EditText editText = (EditText) findViewById(R.id.login);//edittext é o textbox que tem na tela né?
EditText editText1 = (EditText) findViewById(R.id.senha);
editText.setText("");
editText1.setText("");
editText.requestFocus();
}
public void sendMessage(View view)
{
Intent intent = new Intent(this, DisplayMessageActivity.class); //Isso define que será chamada uma nova tela (Com sua classe?)
EditText editText = (EditText) findViewById(R.id.login);
EditText editText1 = (EditText) findViewById(R.id.senha);
String message = editText.getText().toString();
String message1 = editText1.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message); //Atribuira uma string para a classe?
intent.putExtra(EXTRA_MESSAGE1, message1);
if(message1.equals("asd123") && message.equalsIgnoreCase("teste"))
{
startActivity(intent); //Inicializara a nova classe?
}
}
}
[/code]
Agradeço a quem poder me ajudar
Primeiro comentário (Sim, é a chamada principal do seu programa android, mais informações)
http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)
Segundo comentário (Se você quiser adicionar ações e outras informações importantes, como configuração da aplicação, add uma coisa nova (depende da sua aplicação), mais informações)
http://developer.android.com/guide/topics/ui/menus.html#options-menu
Terceiro comentário
Uma View é um elemento de interface. Comparando com uma página HTML, seriam os elementos de formulário, como: botões, caixa de texto, radio buttons etc.
Nesse caso, ele vai chamar uma activity que irá interagir com o usuário.
http://developer.android.com/reference/android/view/View.html
Quarto comentário
Sim.
Acho que o resto dos comentários estão certo. hehehe
Os outros estão respondidos acima.
public void sendMessage(View view)
{
Intent intent = new Intent(this, DisplayMessageActivity.class); //Isso define que será chamada uma nova tela (Com sua classe?)
EditText editText = (EditText) findViewById(R.id.login);
EditText editText1 = (EditText) findViewById(R.id.senha);
String message = editText.getText().toString();
String message1 = editText1.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message); //Atribuira uma string para a classe?
intent.putExtra(EXTRA_MESSAGE1, message1);
if(message1.equals("asd123") && message.equalsIgnoreCase("teste"))
{
startActivity(intent); //Inicializara a nova classe?
}
}
Você não está chamando uma nova tela, você está declarando uma intenção de abrir a Activity definida pelo .class.
o putExtra envia um parametro que pode ser consumido via getIntent().
Terceiro, você não exatamente “chama” uma nova tela, você envia a intenção criada que vai gerenciar as Activities na task. (Mas no caso vai abrir aquela Activity).
Para mais veja a Activity Life-cycle
Só mais uma coisa, to querendo fazer uma tela de login, que assim que seja logado, leve para uma outra tela, e a tela de login não tenha como reabrir, como faço isso? tentei usar o onclose e não foi
Intent i = new Intent(this, NovaActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //esta flag fará que todas as outras activities da sua aplicação sejam fechadas quando iniciar esta nova.
startActivity(i);
Um finish() na sequencia de startActivity também fará que a Activity atual seja fechada.
Mas para garantir que o usuario não entre novamente na tela de login você vai precisar guardar e verificar essa informação no SharedPreferences por exemplo.
Fiz assim:
if(txtsenha.equals("asd123") && txtlogin.equalsIgnoreCase("teste"))
{
this.finish();
startActivity(intent);
}
else
{
senha.setText("");
exibeMensagem("Senha incorreta");
}