Nháy
chuột phải vào com.bai.baidau, New > Class, đặt tên là third, finish.
Lại
nháy chuột phải vào folder layout, New > Android XML File, ở cửa sổ bật ra đặt
tên là ac3, finish.
Sửa
đi để class third trông như sau
public class third extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac3);
}
}
Bây
giờ copy toàn bộ đoạn sau vào file ac3.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="Năm âm lịch là:"
android:textColor="#800000"
android:textSize="20sp" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:textColor="#000080"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="Chọn năm dương:"
android:textColor="#800000"
android:textSize="20sp" />
<Spinner
android:id="@+id/spin1"
android:layout_width="72dp"
android:layout_height="45dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:background="#a1caf1"
android:lineSpacingExtra="4dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="41dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp" >
<Button
android:id="@+id/bu1"
android:layout_width="65dp"
android:layout_height="40dp"
android:layout_marginLeft="4dp"
android:text="Quit"
android:textColor="#0000cd"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="Năm âm lịch là:"
android:textColor="#800000"
android:textSize="20sp" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:textColor="#000080"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="Chọn năm dương:"
android:textColor="#800000"
android:textSize="20sp" />
<Spinner
android:id="@+id/spin1"
android:layout_width="72dp"
android:layout_height="45dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:background="#a1caf1"
android:lineSpacingExtra="4dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="41dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp" >
<Button
android:id="@+id/bu1"
android:layout_width="65dp"
android:layout_height="40dp"
android:layout_marginLeft="4dp"
android:text="Quit"
android:textColor="#0000cd"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
Tiếp theo nháy
đúp vào file AndroidManifest.xml để khai báo class mới, đúng tên gói.
Bây
giờ vào class third để code.
Đầu
tiên khai báo textView, Spinner, Button, tham chiếu địa chỉ.
Spinner
là một thứ mà khi ta ấn vào nó sổ ra một danh sách để ta lựa chọn, trong nhiều
trường hợp tiện hơn EditText vì không phải gõ, cứ chọn ngay.
Ta
phải có một mảng dữ liệu có sẵn để cho vào danh sách chọn. Ở đây ta vẫn làm đổi
năm dương ra âm, chỉ có khác là có sẵn các năm dương.
Ta
có mảng sau:
String[] data = { "2010", "2011", "2012", "2013", "2014",
"2015", "2016", "2017", "2018", "2019", "2020"};
Với Spinner, ta phải
khai báo adapter,bạn copy dòng này vào.
private
ArrayAdapter<String> adapter;
Nhớ
import thư viện khi thấy dấu đỏ.
Trông
class sẽ như sau
Copy
đoạn sau xuống tiếp nối chỗ tham chiếu địa chỉ
adapter = new
ArrayAdapter<String>(third.this, android.R.layout.simple_spinner_item,data);
sp.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>
parent, View view,
int position, long id) {
String
namduong = sp.getSelectedItem().toString();
}
@Override
public void
onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated
method stub
}
});
sp.setAdapter(adapter);
Đây
là ta gắn cái adapter vào spinner để nó có danh sách sổ ra, bây giờ class trông
như sau.
Quay
lại MainActivity sửa chỗ nút Next b2 thành
Intent in = new
Intent(MainActivity.this,third.class);
startActivity(in);
Tức
là ta chuyển sang màn hình của class third. Chạy thử, nhấn next, nhấn vào
Spinner để nó sổ ra.
Cho
đoạn code tính can vào phương thức Chi thành phương thức canchi, copy nó vào
trên cái ngoặc đóng cuối cùng của class third.
public String canchi(int nam) {
int soducan = nam %
10;
String Can = "";
if (soducan == 1)
{
Can = "Tân";
} else if (soducan == 2)
{
Can = "Nhâm";
} else if (soducan == 3)
{
Can = "Quý";
} else if (soducan == 4)
{
Can = "Giáp";
} else if (soducan == 5)
{
Can = "Ất";
} else if (soducan == 6)
{
Can = "Bính";
} else if (soducan == 7)
{
Can = "Đinh";
} else if (soducan == 8)
{
Can = "Mậu";
} else if (soducan == 9)
{
Can = "Kỷ";
} else {
Can = "Canh";
}
int soduchi = nam %
12;
String Chi = "";
if (soduchi == 1)
{
Chi = "Dậu";
} else if (soduchi == 2)
{
Chi = "Tuất";
} else if (soduchi == 3)
{
Chi = "Hợi";
} else if (soduchi == 4)
{
Chi = "Tý";
} else if (soduchi == 5)
{
Chi = "Sửu";
} else if (soduchi == 6)
{
Chi = "Dần";
} else if (soduchi == 7)
{
Chi = "Mão";
} else if (soduchi == 8)
{
Chi = "Thìn";
} else if (soduchi == 9)
{
Chi = "Tỵ";
} else if (soduchi == 10)
{
Chi = "Ngọ";
} else if (soduchi == 11)
{
Chi = "Mùi";
} else {
Chi = "Thân";
}
return Can+ " "+Chi;
}
Bây
giờ là giải thích code trong cái Spinner.
String nam = sp.getSelectedItem().toString();
Ta dùng
dòng này để lấy giá trị của lựa chọn, biến nó thành chuỗi.
int namduong =
Integer.parseInt(nam);
Tiếp theo
ta chuyển kiểu chuỗi sang số, vì mảng chúng ta nhập vào vốn là số ở dạng chữ
nên chuyển kiểu sẽ không bị lỗi, vì thế không cần try catch như đối với
EditText.
String namam =
canchi(namduong);
tv.setText(namam);
Cuối
cùng ta gọi phương thức canchi, truyền vào số năm dương và set kết quả ra
TextView.
Nếu
bạn làm đúng, màn hình sẽ như sau.
Chọn
Spinner để thấy kết quả năm âm chạy theo.
Bây
giờ ta muốn vừa vào màn hình Spinner phải hiện ngay năm 2017. Ta thêm dòng sau
vào dưới chỗ setAdapter.
sp.setSelection(7);
Vì
năm 2017 là phần tử thứ 8 nên để hiển thị nó, ta dùng i=7, vì i=0 là phần tử đầu
tiên. Chỗ này mới học cũng hay bị nhầm.
Cuối
cùng ta code nút quit với lệnh finish() là xong.
Bây
giờ thử sửa chữ “2018” trong data thành”2018
“ có thêm dấu cách trắng, chạy chương trình ra điện thoại để thấy khi chọn
năm 2018 nó bị crash, sập không chạy, vì ký tự trắng đó mà khi chuyển kiểu bị lỗi.
Để
tránh điều này ta dùng lệnh trim() để bỏ hết ký tự trắng ở hai bên nếu có, thêm
dòng sau vào code.
nam=nam.trim();
Chạy lại không
còn lỗi nữa.
Bạn
có thể tự thêm các năm vào trong mảng data cho nó dài ra, thay đổi màu chữ,
kích cỡ trong file ac3.xml để quen với các chỉ số của nó.
Dòng
android:textColor="#0000cd"
để tô màu chữ, bạn search mã Hex code color thay vào là ra màu khác.
No comments:
Post a Comment