Nháy
chuột phải vào com.bai.baidau, New> Class, đặt tên là second, 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à ac2, finish.
Nếu màn hình bung ra trông như sau:
Thì
nháy chuột vào chữ ac2 trong chỗ khoanh đỏ.
Copy
đoạn code sau vào class second
public class second extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac2);
}
Chú
ý bây giờ dòng setContenView là R.layout.ac2, tức là ta muốn gắn class vào giao
diện layout nào thì dòng R.layout phải vào đúng layout đó.
Bây
giờ copy toàn bộ đoạn sau vào file ac2.xml
<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:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="Nhập năm dương lịch:"
android:textColor="#800000"
android:textSize="20dp" />
<EditText
android:id="@+id/e"
android:layout_width="82dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:background="#ccccff"
android:gravity="center"
android:hint="Dương lịch"
android:lineSpacingExtra="4dp"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#00F"
android:textSize="14sp" >
</EditText>
<TextView
android:id="@+id/tv2"
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="20dp" />
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:textColor="#000080"
android:textSize="20dp" />
<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="85dp"
android:layout_height="40dp"
android:text="Đổi năm"
android:textColor="#0000cd"
android:textSize="14sp" />
<Button
android:id="@+id/bu2"
android:layout_width="65dp"
android:layout_height="40dp"
android:layout_marginLeft="4dp"
android:text="Quit"
android:textColor="#0000cd"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<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:text="Nhập năm dương lịch:"
android:textColor="#800000"
android:textSize="20dp" />
<EditText
android:id="@+id/e"
android:layout_width="82dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:background="#ccccff"
android:gravity="center"
android:hint="Dương lịch"
android:lineSpacingExtra="4dp"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#00F"
android:textSize="14sp" >
</EditText>
<TextView
android:id="@+id/tv2"
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="20dp" />
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:textColor="#000080"
android:textSize="20dp" />
<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="85dp"
android:layout_height="40dp"
android:text="Đổi năm"
android:textColor="#0000cd"
android:textSize="14sp" />
<Button
android:id="@+id/bu2"
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 gần dưới cùng, copy đoạn code sau vào trên
dòng </application>
ở dưới cùng, lưu lại.
<activity
android:name="com.bai.baidau.second"
android:screenOrientation="portrait">
</activity>
android:name="com.bai.baidau.second"
android:screenOrientation="portrait">
</activity>
Đó
là ta đang khai báo class mới và đặt màn hình của class này là dọc, nếu không
có dòng screenOrientation này, khi bạn quay ngang điện thoại, màn hình ứng dụng
cũng quay ngang, nếu không cố tình để nó dùng được cả ngang dọc thì có thể bị vỡ
giao diện, trông rất kinh khủng.
Chú
ý nếu bạn không đặt tên package giống tôi thì trong file AndroidManifest.xml bạn khai báo phải đúng tên gói ứng dụng
bạn đặt, nếu không ứng dụng sẽ crash, bị sập, ra màn hình đen thui khi bạn nhấn
nút Next.
Tiếp
theo quay lại class MainActivity copy dòng code sau cho cái nút Next.
b2.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent in = new
Intent(MainActivity.this, second.class); startActivity(in);
}
});
Nhớ
ấn Ctrl+Shift+O để import thư viện cần vào. Chạy thử, ấn nút Next để chuyển
sang màn hình thứ 2, ta thấy nó như sau.
Bây
giờ ta sẽ code vào class second để làm chương trình đổi lịch từ dương lịch
thành năm âm lịch tương ứng.
Gõ
các dòng khai báo TextView, Edittext, Button để class second trông như sau.
Hãy
nhìn dòng tv = (TextView)findViewById(R.id.tv3);
đó là ta tham chiếu địa chỉ cho cái TextView thứ 3 để sẽ ghi năm
âm lịch ra đó, hai TextView còn lại không cần ghi gì nên để nguyên.
Dòng e.setRawInputType(Configuration.KEYBOARD_QWERTY);
là để khi người dùng chạm tay vào ô EditText thì bàn phím hiện ra sẽ là phím số.
Thêm
đoạn code cho cái nút Quit trước vì nó ngắn.
b2.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v)
{
finish();
}
});
Khi
ấn nút này, màn hình sẽ thoát, ta trở về màn hình trước, Android chỉ dùng có lệnh
finish() là xong.
Nút
2 ta phải làm các việc sau:
- Kiểm
tra xem người dùng đã nhập gì vào ô Edittext chưa, nếu chưa thì hiện thông báo
nhắc.
- Kiểm
tra xem có đúng là nhập vào số không, nếu không nhắc.
- Nếu
đúng là số thì đổi nó ra Can Chi tương ứng.
Ở
bài Java cơ bản ta đã biết cách tính can chi rồi, ở đây chỉ nêu cách làm 2 việc
trước.
Ta
lấy String nhập vào bằng lệnh String nam =
e.getText().toString();
Ta
kiểm tra xem nó có rỗng hay không bằng lệnh if
(nam == null || nam.trim().equals(""))
Sau
đó ta dùng lệnh chuyển kiểu sang số để tính toán, vì nếu người dùng nhập lẫn chữ
việc chuyển kiểu sẽ bị lỗi, nên ta dùng try catch để đưa ra thông báo nhập sai,
tức là đáp ứng được yêu cầu thứ 2. Nếu không có gì sai, ta đưa ra kết quả bình
thường. Để thông báo ra màn hình ta dùng lệnh Toast.
Đoạn
code tính Can như sau
int
soducan=namduong%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";
}
Với
Chi, ta cho nó thành phương thức để gọi dùng.
public String tinhchi(int nam){
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 Chi;
}
Phương
thức này truyền vào một số nguyên và trả lại một String hay chữ Chi đã tính ra.
Hãy copy phương thức này vào ngay trên dấu ngoặc đóng cuối cùng của class
second.
Sau
khi đã tính được Can Chi ta set nó ra TextView tv mà ta đã khai báo.
Nếu
bạn làm đúng, code trong cái nút “Đổi năm” tức Button 1 sẽ trông như sau.
Nếu
thấy lỗi đỏ, kiểm tra xem đã import hết thư viện chưa, xem các ngoặc mở đóng đủ
chưa. Mở ra bao nhiêu, đóng lại bấy nhiêu, không được thiếu thừa.
Chạy
thử, thay đổi năm để xem năm âm lịch đổi theo, thử không nhập gì, sẽ có thông
báo chỗ bàn phím.
Thử
nhập kèm dấu chấm, phảy xem sao. Ấn nút Quit để thoát.
Như
vậy bài này ta đã làm ứng dụng đổi dương lịch ra âm lịch. Ta học được về
EditText, lệnh Toast, cách mở ra màn hình mới, trở về màn hình trước. Ta thấy
cú pháp lệnh, cách khai báo, dùng phương thức trong Android cũng y như Java.
Hãy
nhìn chữ this
trong lệnh Toast, nó chỉ class hiện tại tức
second, second.this là Context cần
phải có, nhưng bạn không biết cũng chả sao, vì nó là thủ tục, cứ copy cả đoạn lệnh
là được rồi.
Do đó học bằng thực hành lợi như vậy. Rất nhiều từ khóa ta không cần
biết nó là gì, chỉ cần biết cả đoạn lệnh ấy nó làm cái gì, như với Toast là để
gửi thông báo ra màn hình cho người dùng. Thế là lần sau chỗ nào cần ta cứ copy
cả đoạn vào.
Khỏi cần đọc lý thuyết nhức óc chả tích sự gì.
No comments:
Post a Comment