Showing posts with label Tự học Android. Show all posts
Showing posts with label Tự học Android. Show all posts

Hướng dẫn tự học lập trình Flutter với Dart trên Android Sutudio

1. Tổng quan về Flutter

Flutter là một bộ công cụ giao diện người dùng (UI framework) mã nguồn mở do Google tạo ra và ra mắt vào năm 2017. Điểm "ăn tiền" lớn nhất của Flutter là khả năng phát triển ứng dụng đa nền tảng (Cross-platform) chỉ với một mã nguồn (single codebase).

Thay vì phải học Java/Kotlin để viết app cho Android, rồi lại phải học Swift/Objective-C để viết app cho iOS, bạn chỉ cần học Flutter là có thể build app chạy mượt mà trên cả 2 hệ điều hành này,. Hiện nay, Flutter còn hỗ trợ build ra cả Web và các ứng dụng Desktop (Windows, macOS, Linux).

Flutter không sử dụng các thành phần giao diện mặc định của hệ điều hành mà tự vẽ lại mọi pixel trên màn hình bằng engine đồ họa riêng (Skia/Impeller), giúp ứng dụng có hiệu năng cực kỳ ấn tượng (có thể đạt 60-120fps) và giao diện nhất quán trên mọi thiết bị,. Rất nhiều ông lớn đang sử dụng Flutter như: chính Google (Google Pay), Alibaba, BMW, Toyota, v.v.,.

Hướng dẫn tự học lập trình Flutter với Dart trên Android Sutudio
Hướng dẫn tự học lập trình Flutter với Dart trên Android Sutudio (nguồn NotebookLM)


2. Giới thiệu ngôn ngữ lập trình Dart

Để học Flutter, bạn bắt buộc phải làm quen với ngôn ngữ lập trình Dart. Đây cũng là một ngôn ngữ do Google phát triển, được tối ưu hóa riêng cho việc xây dựng giao diện người dùng.

Nếu bạn đã từng học C++, C# hay Java ở trường đại học, bạn sẽ thấy Dart cực kỳ "quen mặt". Dart là ngôn ngữ kiểu tĩnh (statically typed), hỗ trợ lập trình hướng đối tượng (OOP) hoàn chỉnh với các khái niệm quen thuộc như Class, Interface, Mixin, Kế thừa....

Một số điểm thú vị của Dart khi kết hợp với Flutter:

  • Hot Reload: Dart hỗ trợ biên dịch Just-In-Time (JIT) trong quá trình phát triển. Điều này cho phép tính năng "Hot Reload" hoạt động – bạn vừa sửa code, lưu lại là giao diện app trên điện thoại cập nhật ngay lập tức trong chưa tới 1 giây mà không cần khởi động lại app,.
  • Null Safety: Dart áp dụng cơ chế an toàn null (Sound Null Safety), giúp bạn tránh được lỗi "NullPointerException" khét tiếng, làm cho code an toàn và ít lỗi vặt hơn,.

3. Các bước cài đặt Flutter trên Android Studio

Để lập trình Flutter, bạn cần cài đặt Flutter SDK và một IDE (môi trường lập trình). Android Studio hoặc Visual Studio Code là 2 lựa chọn phổ biến nhất,. Ở đây, chúng ta sẽ dùng Android Studio vì nó tích hợp sẵn các công cụ máy ảo rất tiện lợi.

Bước 1: Tải và cài đặt Flutter SDK

  • Truy cập link tải chính thức: Tải Flutter SDK.
  • Tải file .zip dành cho Windows (hoặc macOS/Linux tùy máy bạn).
  • Giải nén thư mục (Lưu ý: Không nên để trong C:\Program Files, hãy để ở nơi dễ truy cập như C:\src\flutter).
  • Cấu hình biến môi trường (PATH): Mở Environment Variables trên Windows, tìm biến Path, thêm đường dẫn C:\src\flutter\bin vào để máy tính nhận diện được lệnh flutter.

Bước 2: Tải và cài đặt Android Studio

  • Truy cập link tải: Tải Android Studio.
  • Cài đặt bình thường (cứ bấm Next và chọn Standard Installation). Đảm bảo Android SDK và Android Emulator được tick chọn để cài đặt.

Bước 3: Cài đặt Plugin Flutter trong Android Studio

  • Mở Android Studio lên.
  • Vào mục Plugins (hoặc File -> Settings -> Plugins),.
  • Tìm kiếm từ khóa Flutter và nhấn Install. Nó sẽ yêu cầu bạn cài thêm plugin Dart, bạn cứ chọn đồng ý.
  • Khởi động lại (Restart) Android Studio.

Bước 4: Kiểm tra cài đặt

  • Mở Command Prompt (CMD) hoặc Terminal, gõ lệnh: flutter doctor,.
  • Công cụ này sẽ kiểm tra xem bạn còn thiếu gì không. Nếu thấy tất cả đều có dấu tích xanh [✓], xin chúc mừng, bạn đã cài đặt thành công!. (Nếu có lỗi yêu cầu chấp nhận Android License, chỉ cần gõ flutter doctor --android-licenses và bấm 'y' cho đến hết,).

4. Các bước tạo và chạy 1 ứng dụng đầu tiên

Bây giờ chúng ta sẽ làm ứng dụng "Hello World" huyền thoại nhé:

Bước 1: Tạo project

  • Mở Android Studio, chọn New Flutter Project,.
  • Đảm bảo đường dẫn "Flutter SDK path" trỏ đúng vào thư mục Flutter bạn đã giải nén (VD: C:\src\flutter).
  • Đặt tên project (lưu ý viết chữ thường và dùng dấu gạch dưới, ví dụ: hello_flutter), sau đó nhấn Finish,.

Bước 2: Xóa code mẫu và viết code mới Flutter sẽ tự sinh ra một thư mục project. Hãy nhớ nguyên tắc: 90% thời gian code của bạn sẽ nằm trong thư mục lib/. Mở file lib/main.dart, xóa hết toàn bộ code có sẵn đi và chép đoạn code cực kỳ đơn giản sau đây vào:

import 'package:flutter/material.dart';

// Hàm main là nơi chương trình bắt đầu chạy
void main() {
  runApp(const MyApp());
}

// Tạo một Widget cơ bản
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text(
            'Hello World - Chào sinh viên IT!',
            style: TextStyle(fontSize: 24, color: Colors.blue),
          ),
        ),
      ),
    );
  }
}

Giải thích code nhanh: Mọi thứ trong Flutter đều là Widget (thành phần giao diện). MaterialApp là khung chứa app, Scaffold cung cấp cấu trúc màn hình cơ bản, Center giúp căn giữa nội dung, và Text dùng để hiển thị chữ.

Bước 3: Chạy ứng dụng

  • Bạn có thể cắm điện thoại thật vào máy tính (nhớ bật USB Debugging) hoặc chọn một máy ảo (Emulator) ngay trên thanh công cụ của Android Studio hoặc chạy trực tiếp trên trình duyệt Chrome,.
  • Nhấn nút Run (biểu tượng hình tam giác màu xanh),.
  • Đợi một lát để code biên dịch, và Bùm! Dòng chữ "Hello World" đã hiện lên màn hình điện thoại của bạn.

5. Một số tài liệu tham khảo hữu ích

Để tự học Flutter ở mức cơ bản đến nâng cao, bạn có thể lưu lại các trang web "gối đầu giường" sau:

  1. Trang chủ Flutter (Tiếng Anh): Nơi chứa mọi tài liệu chính thống, chính xác nhất từ Google.
  2. Trang chủ ngôn ngữ Dart (Tiếng Anh): Giúp bạn tra cứu cú pháp và cách hoạt động của Dart.
  3. DartPad (Lập trình trực tuyến): Nếu máy yếu chưa kịp cài đặt IDE, bạn có thể lên đây gõ code Dart/Flutter và xem kết quả ngay trên trình duyệt web.
  4. Học qua series bài viết tiếng Việt (Viblo / Cafedev / 200Lab): Rất nhiều lập trình viên Việt Nam chia sẻ các bài hướng dẫn chi tiết từ biến, hàm cho đến cách chia bố cục màn hình.
  5. Kho mã nguồn mở (Pub.dev): Khi bạn cần dùng thư viện bên ngoài (như gọi API, lưu dữ liệu), hãy lên đây tìm kiếm.

Chúc các bạn sinh viên IT có những giờ phút "code dạo" thật thú vị và sớm hoàn thành được những chiếc app xịn xò của riêng mình nhé!

Nếu bạn muốn có nguồn thu tự động, hoàn toàn miễn phí và vô cùng đơn giản thì có thể tham khảo app kiếm tiền Honeygain và EarnApp tại đây.

Nguồn NotebookLM

Các Bước Xây Dựng Ứng Dụng Android Trên Android Studio

Ngày nay, phát triển ứng dụng di động là một kỹ năng quan trọng với sinh viên ngành Công nghệ Thông tin (CNTT). Trong bài viết này, mình sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng Android đơn giản bằng Android Studio, công cụ phát triển phổ biến nhất cho lập trình viên Android.

Hướng Dẫn Sinh Viên Các Bước Xây Dựng Ứng Dụng Android Trên Android Studio


Bước 1: Cài Đặt Android Studio

Đầu tiên, các bạn cần cài đặt Android Studio trên máy tính của mình:

  1. Truy cập trang web chính thức của Android Studio: https://developer.android.com/studio.
  2. Tải xuống và cài đặt Android Studio theo hướng dẫn trên trang.
  3. Sau khi cài đặt, mở Android Studio và thiết lập các thông số cơ bản như tải xuống SDK và các công cụ liên quan.

Bước 2: Tạo Dự Án Mới

Sau khi cài đặt thành công, chúng ta sẽ bắt đầu bằng việc tạo một dự án Android mới:

  1. Mở Android Studio và chọn "New Project".
  2. Chọn mẫu ứng dụng (ví dụ: Empty Activity), sau đó nhấp "Next".
  3. Đặt tên cho ứng dụng của bạn, chọn ngôn ngữ lập trình (thường là Java hoặc Kotlin), rồi bấm "Finish".

Bước 3: Cấu Trúc Dự Án Android

Sau khi tạo dự án, bạn sẽ thấy một cấu trúc thư mục khá phức tạp, bao gồm:

  • Java (hoặc Kotlin): Chứa các tệp mã nguồn cho logic ứng dụng.
  • res: Thư mục chứa tài nguyên như giao diện người dùng (XML), hình ảnh, và các chuỗi văn bản.
  • AndroidManifest.xml: Tệp này chứa thông tin cấu hình chính của ứng dụng.

Bước 4: Thiết Kế Giao Diện Người Dùng (UI)

Android Studio cung cấp một Layout Editor để giúp bạn dễ dàng thiết kế giao diện:

  1. Mở tệp activity_main.xml trong thư mục res/layout.
  2. Sử dụng Component TreePalette để kéo thả các thành phần giao diện (như nút bấm, text box, label, v.v.).
  3. Bạn có thể tùy chỉnh các thuộc tính của từng thành phần trong cửa sổ Attributes (màu sắc, kích thước, vị trí, v.v.).

Ví dụ, bạn có thể kéo một TextView và một Button vào màn hình, sau đó đặt thuộc tính để điều chỉnh kích thước và vị trí của chúng.

Bước 5: Viết Mã Lập Trình

Sau khi thiết kế giao diện, bạn sẽ chuyển sang phần mã nguồn để thêm logic cho ứng dụng. Trong tệp MainActivity.java (hoặc MainActivity.kt), bạn có thể viết mã để xử lý sự kiện:

  1. Mở tệp MainActivity.java trong thư mục java/com.example.yourapp.
  2. Tạo đối tượng tham chiếu tới các thành phần UI đã thiết kế (ví dụ: Button hoặc TextView).
  3. Viết mã để xử lý sự kiện như nhấn nút hoặc hiển thị thông báo.

Sau khi viết xong mã, bạn có thể kiểm tra ứng dụng của mình:

  1. Kết nối điện thoại Android qua USB và bật chế độ Developer Mode trên thiết bị.
  2. Trong Android Studio, nhấp vào nút Run (hoặc nhấn Shift + F10) để biên dịch và chạy ứng dụng trên điện thoại thật.
  3. Bạn cũng có thể sử dụng Android Emulator nếu không có thiết bị thật.

Bước 7: Kiểm Tra và Sửa Lỗi (Debugging)

Trong quá trình phát triển, bạn sẽ gặp phải lỗi hoặc sự cố không mong muốn. Android Studio cung cấp nhiều công cụ giúp bạn kiểm tra và sửa lỗi:

  1. Sử dụng Logcat để xem nhật ký ứng dụng và tìm ra nguyên nhân lỗi.
  2. Sử dụng Breakpoint để dừng chương trình tại một điểm nhất định và xem giá trị của các biến tại thời điểm đó.

Bước 8: Tinh Chỉnh và Cải Tiến

Sau khi kiểm tra ứng dụng, bạn có thể tinh chỉnh và cải thiện:

  • Tối ưu hóa giao diện: Điều chỉnh giao diện để thân thiện hơn với người dùng và tối ưu hóa cho các kích thước màn hình khác nhau.
  • Cải thiện hiệu suất: Sử dụng các công cụ như LintMemory Profiler để kiểm tra hiệu suất và tối ưu mã nguồn.

Bước 9: Đóng Gói và Phát Hành Ứng Dụng

Khi ứng dụng của bạn hoàn thiện, bạn có thể đóng gói nó thành một tệp APK và phát hành:

  1. Chọn Build > Build Bundle(s) / APK(s) > Build APK(s).
  2. Sau khi hoàn tất, Android Studio sẽ tạo ra một tệp APK để bạn có thể cài đặt trên thiết bị hoặc gửi lên Google Play Store.

Kết Luận

Việc phát triển ứng dụng Android không quá phức tạp nếu bạn biết làm theo các bước cơ bản. Quan trọng là bạn cần kiên nhẫn và thực hành thường xuyên để nâng cao kỹ năng. Android Studio là một công cụ mạnh mẽ, và khi đã quen thuộc với nó, bạn có thể xây dựng những ứng dụng phong phú và chất lượng. Chúc các bạn thành công!

[Tự học Android] Sử dụng Shared Preferences trong Android

Sử dụng Shared Preferences trong Android

 

Trong bài tập này Tôi sẽ trình bày về cách lưu trạng thái của ứng dụng (liên quan tới Shared Preferences) và cách tạo các màn hình cấu hình (liên quan tới Shared Preference Change Listeners)

———————————————————


*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]


-A- Cách lưu trạng thái của ứng dụng:

Bước 1:

– Gọi hàm getSharedPreferences, hàm này trả về SharedPreferences và nó có 2 đối. Đối số 1 là tên tập tin để lưu trạng thái, đối số 2 là kiểu lưu. Chú ý là đối số 1 ta chỉ ghi tên tập tin (không cần ghi phần mở rộng, vì phần mở rộng mặc nhiên của nó là .xml khi ta lưu thành công), đối số 2 thường ta để là MODE_PRIVATE:

SharedPreferences pre=getSharedPreferences(“my_data“, MODE_PRIVATE);

Bước 2:

– Tạo đổi tượng Editor để cho phép chỉnh sửa dữ liệu:

SharedPreferences.Editor edit=pre.edit();

Bước 3:

– Đưa dữ liệu muốn lưu trữ vào edit bằng các phương thức edit.putXXX(“key”,”value”);

Tùy vào kiểu dữ liệu ta muốn lưu trữ mà XXX được thay thế bởi các kiểu dữ liệu phù hợp:

editor.putString(“user”, “drthanh”);

editor.putString(“pwd”, “hoilamgi”);

editor.putBoolean(“checked”, true);

Bước 4:

– Lưu trạng thái bằng cách gọi dòng lệnh:

editor.commit();

————————————————————————————————————————–

Sau khi bạn làm đúng 4 bước trên thì chương trình sẽ lưu được trạng thái, như trên đã nói mặc định phần mở rộng là .xml (tức là trạng thái được lưu dưới định dạng tập tin XML). Bên trên ta đặt tên là my_data có nghĩa là chương trình sẽ tạo ra tập tin my_data.xml (bạn mở DDMS lên để xem) – tự động nó sẽ lưu vào thư mục shared_prefs như hình bên dưới:

30_SharedPreferences_5

————————————————————————————————————————–

-B- Cách đọc trạng thái đã lưu:

Rất đơn giản

Bước 1:

– Gọi hàm getSharedPreferences để trả về đối tượng SharedPreferences (giống như phần lưu trạng thái mà Tôi nói ở trên)

SharedPreferences pre=getSharedPreferences (“my_data“,MODE_PRIVATE);

Bước 2:

– Gọi các phương thức getXXX(“key”,giá trị mặc định) để lấy các giá trị lúc trước được lưu

boolean bchk=pre.getBoolean(“checked”, false); //đối số 2 Tôi để false là giá trị mặc định khi nó tìm không thấy key =checked
String user=pre.getString(“user”, “”);//lấy giá trị được lưu trong key=user, nếu không thấy thì gán giá trị mặc định là chuỗi rỗng
String pwd=pre.getString(“pwd”, “”);//giống trên

————————————————————————————————————————–

******** Gợi ý *******

– Lưu và đọc trạng thái bạn nên viết thành các hàm riêng biệt cho dễ sử dụng

– Hàm lưu bạn gọi trong sự kiện onPause

– Hàm đọc bạn gọi trong sự kiện onResume.

******** END *******

Tôi sẽ làm ví dụ cụ thể dưới đây để bạn hiểu rõ hơn về lý thuyết:

Ví dụ 1: bạn muốn tạo một màn hình đăng nhập có checkbox cho phép lưu lại thông tin đăng nhập, lần sau khởi đội lại thì nó sẽ lấy lại thông tin nhập lúc trước để người sử dụng đỡ phải mất công nhập lại (biết về Shared Preferences), xem hình mình họa:

30_SharedPreferences_0

– Khi chọn nút đăng nhập, chương trình sẽ đóng Activity hiện tại và hiển thị Activity dưới đây:

30_SharedPreferences_2

– Chọn nút Thoát, chương trình tiếp tục đóng Activity này giúp tắt hẳn các Activity trong ứng dụng.

– Khởi động lại chương trình sẽ phải tự động load lại thông tin đăng nhập trước đó (Nếu khi đăng nhập có chọn “Lưu thông tin“).

– Bạn xem cấu trúc của Project:

30_SharedPreferences_4

– Layout XML của màn hình chính (activity_main.xml):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".MainActivity" >
 
<TextView
 android:id="@+id/textView1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="#80FFFF"
 android:gravity="center"
 android:text="Đăng nhập hệ thống" />
 
<TableLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:stretchColumns="*"
 >
 
<TableRow
 android:id="@+id/tableRow1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" >
 
<TextView
 android:id="@+id/textView2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="User:" />
 
<EditText
 android:id="@+id/editUser"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:inputType="text"
 android:ems="10" >
 
<requestFocus />
 </EditText>
 </TableRow>
 
<TableRow
 android:id="@+id/tableRow2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" >
 </TableRow>
 
<TableRow
 android:id="@+id/tableRow3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" >
 
<TextView
 android:id="@+id/textView3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Pasword:" />
 
<EditText
 android:id="@+id/editPassword"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:ems="10"
 android:inputType="textPassword" />
 </TableRow>
 
<TableRow
 android:id="@+id/tableRow4"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" >
 
<CheckBox
 android:id="@+id/chksaveacount"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_column="1"
 android:text="Lưu thông tin" />
 </TableRow>
 
<TableRow
 android:id="@+id/tableRow5"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" >
 
<Button
 android:id="@+id/btnlogin"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_column="1"
 android:text="Đăng nhập" />
 </TableRow>
 </TableLayout>
 
</LinearLayout>

– Layout XML của activity_dang_nhap_thanh_cong.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".DangNhapThanhCongActivity" >
 
<TextView
 android:id="@+id/txtmsg"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="TextView"
 android:textSize="20sp" />
 
<Button
 android:id="@+id/btnThoat"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:text="Thoát" />
 
</LinearLayout>

– Bạn xem Source code MainActivity.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package tranduythanh.com;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
 
public class MainActivity extends Activity {
 Button btnlogin;
 EditText edituser,editpassword;
 CheckBox chksaveaccount;
 //đặt tên cho tập tin lưu trạng thái
 String prefname="my_data";
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 btnlogin=(Button) findViewById(R.id.btnlogin);
 edituser =(EditText)
 findViewById(R.id.editUser);
 editpassword=(EditText)
 findViewById(R.id.editPassword);
 chksaveaccount=(CheckBox)
 findViewById(R.id.chksaveacount);
 btnlogin.setOnClickListener(
 new View.OnClickListener() {
 public void onClick(View arg0) {
 doLogin();
 }
 });
 }
 /**
 * hàm đăng nhập hệ thống
 */
 public void doLogin()
 {
 finish();//đóng màn hình hiện tại
 Intent i=new Intent(this, DangNhapThanhCongActivity.class);
 //truyền dữ liệu qua màn hình mới
 i.putExtra("user", edituser.getText().toString());
 startActivity(i);//mở màn hình mới
 }
 @Override
 protected void onPause() {
 // TODO Auto-generated method stub
 super.onPause();
 //gọi hàm lưu trạng thái ở đây
 savingPreferences();
 }
 @Override
 protected void onResume() {
 // TODO Auto-generated method stub
 super.onResume();
 //gọi hàm đọc trạng thái ở đây
 restoringPreferences();
 }
 /**
 * hàm lưu trạng thái
 */
 public void savingPreferences()
 {
 //tạo đối tượng getSharedPreferences
 SharedPreferences pre=getSharedPreferences
 (prefname, MODE_PRIVATE);
 //tạo đối tượng Editor để lưu thay đổi
 SharedPreferences.Editor editor=pre.edit();
 String user=edituser.getText().toString();
 String pwd=editpassword.getText().toString();
 boolean bchk=chksaveaccount.isChecked();
 if(!bchk)
 {
 //xóa mọi lưu trữ trước đó
 editor.clear();
 }
 else
 {
 //lưu vào editor
 editor.putString("user", user);
 editor.putString("pwd", pwd);
 editor.putBoolean("checked", bchk);
 }
 //chấp nhận lưu xuống file
 editor.commit();
 }
 /**
 * hàm đọc trạng thái đã lưu trước đó
 */
 public void restoringPreferences()
 {
 SharedPreferences pre=getSharedPreferences
 (prefname,MODE_PRIVATE);
 //lấy giá trị checked ra, nếu không thấy thì giá trị mặc định là false
 boolean bchk=pre.getBoolean("checked"false);
 if(bchk)
 {
 //lấy user, pwd, nếu không thấy giá trị mặc định là rỗng
 String user=pre.getString("user""");
 String pwd=pre.getString("pwd""");
 edituser.setText(user);
 editpassword.setText(pwd);
 }
 chksaveaccount.setChecked(bchk);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.activity_main, menu);
 return true;
 }
}

– Bạn xem source code DangNhapThanhCongActivity.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package tranduythanh.com;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class DangNhapThanhCongActivity extends Activity {
 
TextView txtMsg;
 Button btnThoat;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_dang_nhap_thanh_cong);
 txtMsg=(TextView) findViewById(R.id.txtmsg);
 btnThoat=(Button) findViewById(R.id.btnThoat);
 btnThoat.setOnClickListener(new OnClickListener() {
 
 @Override
 public void onClick(View arg0) {
 // TODO Auto-generated method stub
 finish();
 }
 });
 
 Intent i=getIntent();
 txtMsg.setText("Hello : "+i.getStringExtra("user"));
 }
 
@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.activity_dang_nhap_thanh_cong, menu);
 return true;
 }
 
}

– Như vậy là đã xong, bạn đã biết được cách lưu trạng thái. Chú ý là lưu trạng thái chỉ lưu Primitive Data, không cho phép lưu Object Serialize.

– Bạn click vào đây để tải coding mẫu: http://www.mediafire.com/download/4e4lyykdukgof82/LearnSharedPreferences.rar

————————————————————————————————————————–

-B- cách tạo Shared Preference Change Listeners để tạo giao diện cấu hình:

Bước 1:

– Tạo một Project Android bất kỳ, sau đó tạo thêm một layout PreferenceScreen:

30_SharedPreferences_6

– đặt tên tùy ý (ở đây Tôi đặt tên mypreferencelayout)

– Không giống như layout bình thường, preference screen sẽ nằm trong thư mục xml như hình bên dưới:

30_SharedPreferences_7

– Tiến hành tạo Checkbox giống như trên. (nó có nhiều control khác, tùy vào nhu cầu)

Bước 2:

– Tạo Activity cho Prefence layout trên (Kế thừa từ PreferenceActivity):

30_SharedPreferences_8

Bước 3:

– Cấu hình Manifest XML cho Preference Activity ở trên:

30_SharedPreferences_9

Bước 4:

– Tiến hành sửa MainActivity để sử dụng Preference Activity (Đăng ký OnSharePreferenceChangeListener):

30_SharedPreferences_10

– Bạn có thể xem kết quả như bên dưới:

30_SharedPreferences_11

————————————————————————————————————————–

Ví dụ 2:

– Bạn cố gắng tự xem lại lý thuyết và đọc coding để hiểu. Ví dụ này Tôi không giải thích coding.

– Hay bạn cần tạo ra các màn hình để cấu hình (giống như màn hình Setting của thiết bị chẳng hạn – cần biết Shared Preference Change Listeners):

30_SharedPreferences_1

*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]


# Nguồn duythanhcse

# BÀI VIẾT NỔI BẬT #

Categories

AI (13) AI programming (1) ASP (1) Android (32) App Honeygain (4) Assembly (17) Biểu diễn thuật toán (1) Bubble-Sort (1) Bài giảng (2) Bài giảng lập trình C và Cpp (21) Bài viết hay (108) Bản đồ tư duy (1) C Plus Plus (103) C/C++ (16) CDSL phân tán (1) CSS (2) Cơ sở dữ liệu (11) Danh ngôn lập trình (1) Datamining (4) Genetic Algorithm (1) Giáo trình (2) Giải thuật tiến hóa - thuật toán di truyền (2) Google App Engine (2) Góc học tập (34) HTML (1) Hướng dẫn kiếm tiền online tại nhà (6) Hướng dẫn sử dụng Emu8086 (1) Học lập trình (131) Học lập trình C và CPP qua ví dụ (17) Java (54) Java Căn bản (6) JavaScript (5) Kỹ năng đọc hiệu quả (1) Kỹ thuật lập trình (16) Kỹ thuật đồ họa máy tính (10) Lý thuyết Cơ sở dữ liệu (2) Lý thuyết đồ thị (11) Lập trình Cơ sở dữ liệu (2) Lập trình Python (2) Lập trình căn bản (8) Lập trình hướng đối tượng với Java (7) Lập trình mobile (9) Lập trình mạng (6) Lập trình nhúng (1) Lập trình trí tuệ nhân tạo (2) ML (1) MMO (6) MS Access (1) Machine learning (2) Mạng máy tính (1) Mẹo tìm kiếm trên Google (1) Nghiên cứu khoa học (3) Ngôn ngữ lập trình (2) Những cuốn sách hay mà bạn nên đọc khi còn trẻ (1) Pascal (3) Phương pháp tính toán tối ưu (2) Phương pháp tối ưu (2) Quản lý dự án CNTT (1) SEO (1) SQL (5) Swift (9) Sách hay (4) Thiết kế Web (2) Thuật toán (51) Thuật toán Sắp Xếp -Sort (9) Thuật toán Tìm kiếm - Search (5) Thuật toán di truyền (4) Thực hành Android (2) Tin học văn phòng (5) Tiện ích máy tính (3) Toán rời rạc (13) Treo máy kiếm tiền (3) Trí tuệ nhân tạo (18) Tài liệu tham khảo (5) Tìm hiểu Blockchain (2) Tự học Android (3) Tự học Android qua ví dụ (1) Tự học JavaScript (1) Tự học lập trình (9) Tự học lập trình Android (17) Tự học lập trình C và CPP (14) Tự học lập trình java qua các ví dụ (8) XML (1) blockchain (2) bài giảng quản lý dự án CNTT (1) bài tập java (3) bài tập lập trình (4) cấu trúc dữ liệu giải thuật (15) hướng dẫn viết báo (1) học lập trình Java (11) học máy (5) hợp ngữ (8) lập trình viên (3) phưng pháp đơn hình (2) thuật toán AI (2) tài liệu CNTT miễn phí (4) tính toán tối ưu (1) tự học lập trình iOS (8) tự học lập trình python (1) ví dụ Assembly (1) Đại số gia tử và ứng dụng (1) Đồ họa (4)