Bài tập 02: Tạo ứng dụng PIZZA ORDERING
Đề bài
Thực hiện một ứng dụng có tên PIZZA ORDERING trên Android. Giao diện người dùng được thiết kế như hình phía dưới. Bạn cũng có thể cải tiến giao diện này sao cho phù hợp.
Chức năng
Sau khi hoàn thành việc nhập dữ liệu và chọn các thông số, người sử dụng ấn vào nút ‘SMS – Place you order’ để gửi đơn đặt hàng. Phiên bản sau này chúng ta sẽ gửi message tới nhà cung cấp. Tại thời điểm hiện tại đơn giản chỉ hiển thị thống kê đặt hàng bằng đối tượng Toast.
Yêu cầu
- Kiểm tra hai ô tên khách hàng và số phone không được để trống
- Mặc định hình dáng Pizza chọn ‘Round Pizza’
- Test ứng dụng của bạn trên trình giả lập
- Chú thích Code rõ ràng
- Copy code giao diện XML LAYOUT và code Java, bao gồm cả chụp giao diện màn hình ứng dụng của bạn và gửi vào trang Hỏi đáp
Code tham khảo
1. Code giao diện
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000FF"
tools:context=".MainActivity">
<EditText
android:id="@+id/txtHoTen"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="8dp"
android:background="@android:color/darker_gray"
android:ems="10"
android:hint="@string/hintHoTen"
android:inputType="textPersonName"
android:textColorHint="#000000"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/txtPhoneNumber"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:background="@android:color/darker_gray"
android:ems="10"
android:hint="@string/hintPhoneNumber"
android:inputType="textPersonName"
android:textColor="@android:color/black"
android:textColorHint="@android:color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtHoTen" />
<RadioGroup
android:id="@+id/grpRadioButton1"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtPhoneNumber">
<RadioButton
android:id="@+id/rbtCheese"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:shadowColor="@android:color/darker_gray"
android:text="Cheese"
android:textColor="@android:color/black" />
<RadioButton
android:id="@+id/rbtTwoCheese"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:checked="false"
android:shadowColor="@android:color/darker_gray"
android:text="2 x Cheese"
android:textColor="@android:color/black" />
<RadioButton
android:id="@+id/rbtNone"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:shadowColor="@android:color/darker_gray"
android:text="None"
android:textColor="@android:color/black" />
</RadioGroup>
<RadioGroup
android:id="@+id/grRadioButton2"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/grpRadioButton1">
<RadioButton
android:id="@+id/rbtSquare"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:text="Square"
android:textColor="@android:color/black" />
<RadioButton
android:id="@+id/rbtRoundPizza"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_weight="1"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:checked="true"
android:text="Round Pizza"
android:textColor="@android:color/black" />
</RadioGroup>
<CheckBox
android:id="@+id/chkPepperoni"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:text="Pepperoni"
android:textColor="@android:color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/grRadioButton2" />
<CheckBox
android:id="@+id/chkMushrooms"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:checked="true"
android:enabled="false"
android:text="Mushrooms"
android:textColor="@android:color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chkPepperoni" />
<CheckBox
android:id="@+id/chkVeggies"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:text="Veggies"
android:textColor="@android:color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chkMushrooms" />
<CheckBox
android:id="@+id/chkAnchovies"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:backgroundTint="@android:color/darker_gray"
android:buttonTint="@android:color/darker_gray"
android:checked="true"
android:enabled="false"
android:text="Anchovies"
android:textColor="@android:color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chkVeggies" />
<Button
android:id="@+id/btnSMS"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:background="@android:color/darker_gray"
android:text="SMS - Place you order"
android:textColor="@android:color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chkAnchovies" />
</android.support.constraint.ConstraintLayout>
2. Code Java
package fita.timoday.pizzaorder;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText txtHoTen;
EditText txtPhone;
Button btnSMS;
RadioButton rbtCheese;
RadioButton rbt2Cheese;
RadioButton rbtNone;
RadioGroup rbgGroup1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtHoTen = (EditText)findViewById(R.id.txtHoTen);
txtPhone = (EditText)findViewById(R.id.txtPhoneNumber);
btnSMS = (Button)findViewById(R.id.btnSMS);
rbtCheese = (RadioButton)findViewById(R.id.rbtCheese);
rbt2Cheese = (RadioButton)findViewById(R.id.rbtTwoCheese);
rbtNone = (RadioButton)findViewById(R.id.rbtNone);
rbgGroup1 = (RadioGroup)findViewById(R.id.grpRadioButton1);
btnSMS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Biến chữa chuỗi kết quả
String kq = "";
//Kiểm tra dữ liệu họ tên có bị trống không
if(txtHoTen.getText().toString().trim().equals("")) {
Toast.makeText(MainActivity.this, "Bạn cần nhập vào họ tên", Toast.LENGTH_LONG).show();
txtHoTen.requestFocus();
return;
}
//Kiểm tra dữ liệu số phone có bị trống không
if(txtPhone.getText().toString().trim().equals("")) {
Toast.makeText(MainActivity.this, "Bạn cần nhập vào số điện thoại", Toast.LENGTH_LONG).show();
txtPhone.requestFocus();
return;
}
kq = "Họ tên:" + txtHoTen.getText().toString() + " , số điện thoại:" + txtPhone.getText();
kq += "Thông tin loại pizza:\n";
//Code kiểm tra từng radiobutton
/*if(rbt2Cheese.isChecked())
kq += rbt2Cheese.getText().toString();
if(rbtCheese.isChecked())
kq += rbtCheese.getText().toString();
if(rbtNone.isChecked())
kq += rbtNone.getText().toString();*/
//Code kiểm tra radiobutton được kích thuông qua RidioButtonGroup
int rbtIdSelected = rbgGroup1.getCheckedRadioButtonId();
rbtCheese = (RadioButton)findViewById(rbtIdSelected);
kq += rbtCheese.getText().toString();
//Sử dụng Intent để truyền dữ liệu sang màn hình gửi SMS
Intent myIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:0123456789"));
myIntent.putExtra("sms_body",kq);
startActivity(myIntent);
}
});
}
}
