Upload
lolzito
View
220
Download
0
Embed Size (px)
DESCRIPTION
pm
Citation preview
Trabalhando com mais de um Activity
Em um aplicativo móvel geralmente trabalhamos com mais de uma janela. Para que isso seja
possível, deve ser usadas as classes Intent e Bundle. A seguir será demonstrado como passar
valores de um Activity a outro.
Criar projeto no ADT: prjCalculoArea
O activity_main.xml deverá semelhante ao apesentado a seguir:
1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2. xmlns:tools="http://schemas.android.com/tools" 3. android:layout_width="match_parent" 4. android:layout_height="match_parent" 5. android:gravity="top" 6. android:paddingBottom="@dimen/activity_vertical_margin" 7. android:paddingLeft="@dimen/activity_horizontal_margin" 8. android:paddingRight="@dimen/activity_horizontal_margin" 9. android:paddingTop="@dimen/activity_vertical_margin" 10. tools:context=".MainActivity" >
11.
12. <LinearLayout
13. android:layout_width="wrap_content"
14. android:layout_height="wrap_content"
15. android:layout_alignParentBottom="true"
16. android:layout_alignParentLeft="true"
17. android:layout_alignParentRight="true"
18. android:layout_alignParentTop="true"
19. android:gravity="center_vertical"
20. android:orientation="vertical" >
21.
22. <Button
23. android:id="@+id/btnRetangulo"
24. android:layout_width="match_parent"
25. android:layout_height="wrap_content"
26. android:text="@string/txtBtnRetangulo" />
27.
28. <Button
29. android:id="@+id/btnTriangulo"
30. android:layout_width="match_parent"
31. android:layout_height="wrap_content"
32. android:text="@string/txtBtnTriangulo" />
33.
34. <Button
35. android:id="@+id/btnCirculo"
36. android:layout_width="match_parent"
37. android:layout_height="wrap_content"
38. android:text="@string/txtBtnCirculo" />
39.
40. </LinearLayout>
41.
42. </RelativeLayout>
Agora deverá ser criado o Activity que irá realizar o cálculo da área do Retângulo:
O activity_frm_calculo_retangulo.xml deverá semelhante ao apesentado a seguir:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FrmCalculoAreaRetangulo" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:orientation="vertical" >
<EditText
android:id="@+id/txtARLargura"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/txtLargura"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtARComprimento"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/txtAltura"
android:inputType="numberDecimal" />
<Button
android:id="@+id/btnARCalcular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtBtnCalcular" />
</LinearLayout>
</RelativeLayout>
Agora deverá ser criado o Activity que irá realizar o cálculo da área do Triângulo:
O activity_frm_calculo_triangulo.xml deverá semelhante ao apesentado a seguir:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FrmCalculoAreaTriangulo" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:orientation="vertical" >
<EditText
android:id="@+id/txtATBase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/txtBase"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtATAltura"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/txtAltura"
android:inputType="numberDecimal" />
<Button
android:id="@+id/btnATCalcular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtBtnCalcular" />
</LinearLayout>
</RelativeLayout>
Finalmente deverá ser criado o Activity que irá realizar o cálculo da área do Círculo:
O activity_frm_calculo_circulo.xml deverá semelhante ao apesentado a seguir:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FrmCalculoAreaCirculo" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:orientation="vertical" >
<EditText
android:id="@+id/txtACRaio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/txtRaio"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btnACCalcular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtBtnCalcular" />
</LinearLayout>
</RelativeLayout>
Renomear o pacote principal para com.calculoarea.view:
Criar o pacote com.calculoarea.model em src:
Criar o pacote com.calculoarea.controller em src:
Criar a classe MedidasBean em com.calculoarea.controller:
package com.calculoarea.controller;
public class MedidasBean {
private double largura;
private double altura;
private double base;
private double raio;
public double getAltura() {
return altura;
}
public double getBase() {
return base;
}
public double getLargura() {
return largura;
}
public double getRaio() {
return raio;
}
public void setAltura(double altura) {
this.altura = altura;
}
public void setBase(double base) {
this.base = base;
}
public void setLargura(double largura) {
this.largura = largura;
}
public void setRaio(double raio) {
this.raio = raio;
}
}
Criar a classe CalculoArea em com.calculoarea.model:
package com.calculoarea.model;
import com.calculoarea.controller.MedidasBean;
public class CalculoArea {
public double areaRetangulo(MedidasBean mb) {
return mb.getLargura()*mb.getAltura();
}
public double areaTriangulo(MedidasBean mb) {
return (mb.getBase()*mb.getAltura())/2;
}
public double areaCirculo(MedidasBean mb) {
return (Math.PI*Math.pow(mb.getRaio(), 2));
}
}
Criar a classe CalculoAreaController em com.calculoarea.controller:
package com.calculoarea.controller;
import com.calculoarea.model.CalculoArea;
public class CalculoAreaController {
public double areaRetangulo(MedidasBean mb) {
return new CalculoArea().areaRetangulo(mb);
}
public double areaTriangulo(MedidasBean mb) {
return new CalculoArea().areaTriangulo(mb);
}
public double areaCirculo(MedidasBean mb) {
return new CalculoArea().areaCirculo(mb);
}
}
A classe com.calculadora.view.MainActivity, iremos deixar como a seguir:
public class MainActivity extends Activity {
Button btnRetangulo, btnTriangulo, btnCirculo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnRetangulo = (Button) findViewById(R.id.btnRetangulo);
btnTriangulo = (Button) findViewById(R.id.btnTriangulo);
btnCirculo = (Button) findViewById(R.id.btnCirculo);
btnRetangulo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(),
FrmCalculoAreaRetangulo.class);
startActivity(intent);
}
});
btnTriangulo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(),
FrmCalculoAreaTriangulo.class);
startActivity(intent);
}
});
btnCirculo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(),
FrmCalculoAreaCirculo.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
A classe de cálculo da área do retângulo com.calculadora.view.
FrmCalculoAreaRetangulo, iremos deixar como a seguir:
public class FrmCalculoAreaRetangulo extends Activity {
EditText txtLargura, txtAltura;
Button btnCalcula;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frm_calculo_retangulo);
txtLargura = (EditText) findViewById(R.id.txtARLargura);
txtAltura = (EditText) findViewById(R.id.txtARAltura);
btnCalcula = (Button) findViewById(R.id.btnARCalcula);
btnCalcula.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MedidasBean mb = new MedidasBean();
CalculoAreaController cac = new CalculoAreaController();
mb.setLargura(Double.parseDouble(String.valueOf(txtLargura.getText())));
mb.setAltura(Double.parseDouble(String.valueOf(txtAltura.getText())));
alerta(String.valueOf(cac.areaRetangulo(mb)));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.frm_calculo_area_retangulo, menu);
return true;
}
public void alerta(String resultado) {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("Área do retângulo")
.setMessage(resultado)
.setCancelable(true)
.setIcon(R.drawable.ic_launcher)
.create();
alertDialog.show();
}
}
A classe de cálculo da área do triângulo com.calculadora.view.
FrmCalculoAreaTriangulo, iremos deixar como a seguir:
public class FrmCalculoAreaTriangulo extends Activity {
EditText txtBase, txtAltura;
Button btnCalcula;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frm_calculo_triangulo);
txtBase = (EditText) findViewById(R.id.txtATBase);
txtAltura = (EditText) findViewById(R.id.txtATAltura);
btnCalcula = (Button) findViewById(R.id.btnATCalcula);
btnCalcula.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MedidasBean mb = new MedidasBean();
CalculoAreaController cac = new CalculoAreaController();
mb.setBase(Double.parseDouble(String.valueOf(txtBase.getText())));
mb.setAltura(Double.parseDouble(String.valueOf(txtAltura.getText())));
alerta(String.valueOf(cac.areaTriangulo(mb)));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.frm_calculo_area_triangulo, menu);
return true;
}
public void alerta(String resultado) {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("Área do triângulo")
.setMessage(resultado)
.setCancelable(true)
.setIcon(R.drawable.ic_launcher)
.create();
alertDialog.show();
}
}
A classe de cálculo da área do círculo com.calculadora.view. FrmCalculoAreaCirculo,
iremos deixar como a seguir:
public class FrmCalculoAreaCirculo extends Activity {
EditText txtRaio;
Button btnCalcula;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frm_calculo_circulo);
txtRaio = (EditText) findViewById(R.id.txtACRaio);
btnCalcula = (Button) findViewById(R.id.btnACCalcula);
btnCalcula.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MedidasBean mb = new MedidasBean();
CalculoAreaController cac = new CalculoAreaController();
mb.setRaio(Double.parseDouble(String.valueOf(txtRaio.getText())));
alerta(String.valueOf(cac.areaCirculo(mb)));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.frm_calculo_area_circulo, menu);
return true;
}
public void alerta(String resultado) {
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("Área do círculo")
.setMessage(resultado)
.setCancelable(true)
.setIcon(R.drawable.ic_launcher)
.create();
alertDialog.show();
}
}
Rodar o projeto na máquina virtual.