Xu Hướng 6/2023 # Hướng Dẫn Xử Lý Json Trong Android # Top 12 View | Uta.edu.vn

Xu Hướng 6/2023 # Hướng Dẫn Xử Lý Json Trong Android # Top 12 View

Bạn đang xem bài viết Hướng Dẫn Xử Lý Json Trong Android được cập nhật mới nhất trên website Uta.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu dữ liệu (data exchange format). Nó lưu trữ các dữ liệu theo cặp khóa và giá trị. So với XML thì JSON đơn giản về dễ đọc hơn.

Hãy xem một ví dụ đơn giản của JSON:

{ "name" : "Tran", "address" : "Hai Duong, Vietnam", "phones" : [0121111111, 012222222] }

Các cặp key-value có thể lồng nhau:

{ "id": 111 , "name":"Microsoft", "websites": [ "http://microsoft.com", "http://msn.com", "http://hotmail.com" ], "address":{ "street":"1 Microsoft Way", "city":"Redmond" } }

Trong Java có rất nhiều các thư viện mã nguồn mở giúp bạn thao tác với tài liệu JSON, chẳng hạn như:

Android hỗ trợ sẵn thư viện để làm việc với JSON, bạn không cần phải khai báo bất cứ một thư viện nào khác. Trong tài liệu hướng dẫn này tôi sẽ hướng dẫn bạn làm việc với JSON sử dụng JSON API có sẵn trong hệ điều hành của Android.

Tôi tạo nhanh một project có tên JSONTutorial để làm việc với JSON thông qua các ví dụ.

Name: JSONTutorial

Package name: org.o7planning.jsontutorial

Tôi tạo thêm một vài file json trong thư mục ‘raw’, các file này sẽ tham gia vào một các ví dụ trong tài liệu này.

Các nguồn cung cấp dữ liệu JSON có thể từ file hoặc URL,… Ở cuối tài liệu bạn có thể xem ví dụ lấy dữ liệu JSON từ URL, phân tích và hiển thị trên một ứng dụng Android.

{ "id": 111 , "name":"Microsoft", "websites": [ "http://microsoft.com", "http://msn.com", "http://hotmail.com" ], "address":{ "street":"1 Microsoft Way", "city":"Redmond" } }

Thiết kế activity_main.xml:

<androidx.constraintlayout.widget.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" <EditText android:id="@+id/editText" android:layout_width="0dp" android:layout_height="220dp" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" android:ems="10" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="39dp" android:text="Running the Example" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"

Một số class tham gia vào các ví dụ:

package org.o7planning.jsontutorial.beans; public class Address { private String street; private String city; public Address() { } public Address(String street, String city) { this.street = street; chúng tôi = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { chúng tôi = city; } @Override public String toString() { return street + ", " + city; } } package org.o7planning.jsontutorial.beans; public class Company { private int id; private String name; private String[] websites; private Address address; public int getId() { return id; } public void setId(int id) { chúng tôi = id; } public String getName() { return name; } public void setName(String name) { chúng tôi = name; } public String[] getWebsites() { return websites; } public void setWebsites(String[] websites) { this.websites = websites; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("n id:" + this.id); sb.append("n name:" + this.name); if (this.websites != null) { sb.append("n website: "); for (String website : this.websites) { sb.append(website + ", "); } } if (this.address != null) { sb.append("n address:" + this.address.toString()); } return sb.toString(); } }

Trong ví dụ này chúng ta sẽ đọc file dữ liệu JSON và chuyển nó thành đối tượng Java.

package org.o7planning.jsontutorial.json; import android.content.Context; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.o7planning.jsontutorial.R; import org.o7planning.jsontutorial.beans.Address; import org.o7planning.jsontutorial.beans.Company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class ReadJSONExample { public static Company readCompanyJSONFile(Context context) throws IOException,JSONException { String jsonText = readText(context, R.raw.company); JSONObject jsonRoot = new JSONObject(jsonText); int id= jsonRoot.getInt("id"); String name = jsonRoot.getString("name"); JSONArray jsonArray = jsonRoot.getJSONArray("websites"); String[] websites = new String[jsonArray.length()]; for(int i=0;i < jsonArray.length();i++) { websites[i] = jsonArray.getString(i); } JSONObject jsonAddress = jsonRoot.getJSONObject("address"); String street = jsonAddress.getString("street"); String city = jsonAddress.getString("city"); Address address= new Address(street, city); Company company = new Company(); company.setId(id); company.setName(name); company.setAddress(address); company.setWebsites(websites); return company; } private static String readText(Context context, int resId) throws IOException { InputStream is = context.getResources().openRawResource(resId); BufferedReader br= new BufferedReader(new InputStreamReader(is)); StringBuilder sb= new StringBuilder(); String s= null; while(( s = br.readLine())!=null) { sb.append(s); sb.append("n"); } return sb.toString(); } } package org.o7planning.jsontutorial; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import org.o7planning.jsontutorial.beans.Company; import org.o7planning.jsontutorial.json.ReadJSONExample; public class MainActivity extends AppCompatActivity { private EditText outputText; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.outputText = (EditText)this.findViewById(R.id.editText); this.button = (Button) this.findViewById(R.id.button); @Override runExample(view); } }); } public void runExample(View view) { try { Company company = ReadJSONExample.readCompanyJSONFile(this); outputText.setText(company.toString()); } catch(Exception e) { outputText.setText(e.getMessage()); e.printStackTrace(); } } }

Ví dụ sau chuyển một đối tượng Java thành một dữ liệu JSON.

package org.o7planning.jsontutorial.json; import android.util.JsonWriter; import org.o7planning.jsontutorial.beans.Address; import org.o7planning.jsontutorial.beans.Company; import java.io.IOException; import java.io.Writer; public class JsonWriterExample { public static void writeJsonStream(Writer output, Company company ) throws IOException { JsonWriter jsonWriter = new JsonWriter(output); jsonWriter.beginObject();// begin root jsonWriter.name("id").value(company.getId()); jsonWriter.name("name").value(company.getName()); String[] websites= company.getWebsites(); jsonWriter.name("websites").beginArray(); for(String website: websites) { jsonWriter.value(website); } jsonWriter.endArray();// end websites jsonWriter.name("address").beginObject(); jsonWriter.name("street").value(company.getAddress().getStreet()); jsonWriter.name("city").value(company.getAddress().getCity()); jsonWriter.endObject();// end address jsonWriter.endObject(); } public static Company createCompany() { Company company = new Company(); company.setId(123); company.setName("Apple"); String[] websites = { "http://apple.com", "https://jobs.apple.com" }; company.setWebsites(websites); Address address = new Address(); address.setCity("Cupertino"); address.setStreet("1 Infinite Loop"); company.setAddress(address); return company; } } package org.o7planning.jsontutorial; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import org.o7planning.jsontutorial.beans.Company; import org.o7planning.jsontutorial.json.JsonWriterExample; import java.io.StringWriter; public class MainActivity extends AppCompatActivity { private EditText outputText; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.outputText = (EditText)this.findViewById(R.id.editText); this.button = (Button) this.findViewById(R.id.button); @Override runExample(view); } }); } public void runExample(View view) { try { StringWriter output = new StringWriter(); Company company = JsonWriterExample.createCompany(); JsonWriterExample.writeJsonStream(output, company); String jsonText = output.toString(); outputText.setText(jsonText); } catch(Exception e) { outputText.setText(e.getMessage()); e.printStackTrace(); } } }

Để đọc JSON từ một URL bạn cần phải sử dụng các kỹ thuật của Android Networking, download tập tin JSON sau đó phân tích (parse) nó.

Hướng Dẫn Xử Lý Ngoại Lệ Trong Java

Trước hết chúng ta hãy xem một ví dụ minh họa sau: Trong ví dụ này có một đoạn code lỗi nguyên nhân do phép chia cho 0. Việc chia cho 0 gây ra ngoại lệ: ArithmeticException

Kết quả chạy ví dụ: Bạn có thể thấy thông báo lỗi trên màn hình Console, thông báo lỗi rất rõ ràng, xẩy ra ở dòng thứ mấy trên code.

Chương trình đã chạy hoàn toàn bình thường từ các bước (1),(2) cho tới (5)

Bước thứ (6) xẩy ra vấn đề khi chia cho 0.

Chương trình đã nhẩy ra khỏi hàm main, và dòng code thứ (7) đã không được thực hiện.

Chúng ta sẽ sửa code của ví dụ trên.

Các bước (1)-(5) hoàn toàn bình thường.

Ngoại lệ xẩy ra tại bước (6), vấn đề chia cho 0.

Lập tức nó nhẩy vào thực thi lệnh trong khối catch, bước (7) bị bỏ qua.

Bước (8),(9) được thực hiện.

Bước (10) được thực hiện.

Đây là mô hình sơ đồ phân cấp của Exception trong java.

Class ở mức cao nhất là Throwable

Hai class con trực tiếp là Error và Exception.

Trong nhánh Exception có một nhánh con RuntimeException là các ngoại lệ sẽ không được java kiểm tra trong thời điểm biên dịch.Ý nghĩa của được kiểm tra và không được kiểm tra tại thời điểm biên dịch sẽ được minh họa trong các ví dụ phần sau.

Chú ý: Các class tùy biến của bạn nên viết thừa kế từ 2 nhánh Error hoặc Exception, không viết thừa kế trực tiếp từ Throwable.

Error

Khi liên kết động thất bại, hoặc trong máy ảo xẩy ra một vấn đề nghiêm trọng, nó sẽ ném ra một Error. Các chương trình Java điển hình không nên bắt lỗi (Error). Ngoài ra, nó không chắc rằng các chương trình Java điển hình sẽ bao giờ ném lỗi

Ví dụ về liên kết động: Chẳng hạn, khi bạn gọi đến thư viện mà thư viện đó thiếu class, hoặc thiếu method,… trong trường hợp vậy Error sẽ bị ném ra.

Exceptions

Hầu hết các chương trình ném và bắt các đối tượng là con của class Exception. Trường hợp Exception cho thấy một vấn đề xảy ra nhưng vấn đề không phải là một vấn đề mang tính hệ thống nghiêm trọng. Hầu hết các chương trình bạn viết sẽ ném và bắt Exception.

Class Exception có nhiều class con cháu được định nghĩa trong gói Java. Những hậu duệ cho nhiều loại hình trường hợp ngoại lệ có thể xảy ra. Ví dụ, NegativeArraySizeException được ném ra khi bạn cố gắng tạo một mảng (array) mà lại có số phần tử âm.

Một class ngoại lệ con có ý nghĩa đặc biệt trong ngôn ngữ Java: RuntimeException.

Runtime Exceptions

Class RuntimeException đại diện cho trường hợp ngoại lệ xảy ra trong thời gian chạy chương trình. Một ví dụ về một ngoại lệ thời gian chạy là NullPointerException, xảy ra khi một bạn truy cập vào method hoặc field một đối tượng thông qua một tham chiếu null. Với các ngoại lệ kiểu này người ta thường kiểm tra để đảm bảo rằng đối tượng này khác null, hơn là tìm bắt ngoại lệ.

Bởi vì trường hợp ngoại lệ thời gian chạy rất phổ biến và cố gắng bắt hoặc chỉ định tất cả chúng là cách làm không hiệu quả. Trình biên dịch của Java không kiểm tra các ngoại lệ này trong quá trình biên dịch code.

Java định nghĩa một vài lớp RuntimeException. Bạn có thể bắt (Catch) những trường hợp ngoại lệ này như cách bắt các ngoại lệ thông thường khác. Các method mà trong nó có thể ném ra RuntimeException cũng không đòi hỏi phải khai báo trên định nghĩa của nó. Ngoài ra, bạn có thể tạo lớp con RuntimeException của riêng bạn.

Chúng ta viết một exception thừa kế từ class Exception.

Và class AgeUtils có method tĩnh dùng cho việc kiểm tra tuổi.

Checked Exception & Unchecked Exception:

AgeException là con của Exception, TooOldException và TooYoungException là 2 class con trực tiếp của AgeException, nên chúng là các “Checked Exception”

Trong method AgeUtils.checkAge(int) có ném ra ngoài các ngoại lệ này vì vậy trên khai báo của method bạn cần phải liệt kê chúng thông qua từ khóa “throws”. Hoặc bạn có thể khai báo ném ra ở mức tổng quát hơn

Tại các nơi sử dụng AgeUtils.checkAge(int) cũng phải có sử lý để bắt các ngoại lệ đó, hoặc tiếp tục ném ra vòng ngoài.

“Checked exception” sẽ được“Java Compiler” kiểm tra.

Bạn có hai sự lựa chọn sử lý:

Ném tiếp ra vòng ngoài

Thực hiện việc bắt và sử lý ngoại lệ thông qua try-catch.

Bạn cũng có thể gộp xử lý các ngoại lệ khác nhau vào cùng một khối catch để sử lý nếu chúng có cách xử lý giống nhau trong logic chương trình của bạn.

Trên kia chúng ta đã làm quen với việc bắt lỗi thông qua khối try-catch. Việc xử lý ngoại lệ đầy đủ là try-catch-finally.

try { } catch (Exception1 e) { } catch (Exception2 e) { } finally { }

Đây là sơ luồng đi của chương trình. Khối finally luôn được thực thi.

Chúng ta cần một vài class tham gia vào ví dụ này:

Person: Mô phỏng một người tham gia tuyển dụng vào công ty với các thông tin

GenderException: Ngoại lệ giới tính.

ValidateException: Ngoại lệ đánh giá thí sinh.

ValidateUtils: Class có method tĩnh đánh giá thí sinh đủ tiêu chuẩn không.

Tiêu chuẩn là những người độ tuổi 18-40

Và là Nam.

Class ValidateException bao lấy một Exception khác.

Class RuntimeException và các class con, cháu của nó đều là các“Unchecked exception”. Nó không được bộ dịch java kiểm tra trong thời gian biên dịch. Trong một vài tình huống bạn có thể viết các exception của mình thừa kế từ nhánh này. Có một số ngoại lệ trong nhánh này sẵn có trong java mà bạn cần phải để mắt tới nó.

Chúng ta thử một vài ví dụ xử lý các ngoại lệ kiểu này:

6.1- NullPointerException

Đây là một trong các ngoại lệ thông dụng nhất, và hay gây ra lỗi cho chương trình. Ngoại lệ được ném ra khi bạn gọi phương thức hoặc truy cập vào các trường của một đối tượng chưa được khởi tạo (đối tượng null).

NullPointerExceptionDemo.java

package org.o7planning.tutorial.exception.runtime; public class NullPointerExceptionDemo { public static String getString() { if (1 == 2) { return "1==2 !!"; } return null; } public static void main(String[] args) { String text1 = "Hello exception"; int length = text1.length(); System.out.println("Length text1 = " + length); String text2 = getString(); System.out.println("Finish!"); } }

Trong thực tế giống việc xử lý các ngoại lệ khác, bạn có thể sử dụng try-catch để bắt ngoại lệ này mà xử lý. Tuy nhiên, đó là cách máy móc, thông thường chúng ta nên kiểm tra để đảm bảo rằng đối tượng là khác null trước khi sử dụng nó.

String text2 = getString(); if (text2 != null) { length = text2.length(); } 6.2- ArrayIndexOfBoundException

Đây là ngoại lệ nó được ném ra khi bạn cố truy cập vào phần tử có chỉ số không hợp lệ trên mảng. Chẳng hạn mảng có 10 phần tử, mà bạn lại truy cập vào phần tử có chỉ số 20.

ArrayIndexOfBoundsExceptionDemo.java

package org.o7planning.tutorial.exception.runtime; public class ArrayIndexOfBoundsExceptionDemo { public static void main(String[] args) { String[] strs = new String[] { "One", "Two", "Three" }; String str1 = strs[0]; System.out.println("String at 0 = " + str1); String str2 = strs[5]; System.out.println("String at 5 = " + str2); } }

Để tránh ArrayIndexOfBoundsException bạn nên kiểm tra mảng thay vì sử dụngtry-catch.

String str2 = strs[5]; System.out.println("String at 5 = " + str2); } else { System.out.println("No elements with index 5"); }

Json Và Web Api Trong Lập Trình Android Cơ Bản

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về CƠ CHẾ XỬ LÝ BẤT ĐỒNG BỘ TRONG ANDROID và cách sử dụng AsyncTask để dễ dàng thao tác xử lý bất đồng bộ.

Tuy nhiên trong quá trình làm việc, các thao tác xử lý bất đồng bộ thường là các thao tác với mạng. Và mỗi lần phải sử dụng AsyncTask để làm như vậy thì quả là dài.

Bài hôm nay chúng ta sẽ sử dụng một thư viện hỗ trợ mạng cực mạnh, cũng như một bộ xử lý thông tin dạng JSON mà các Web API hay sử dụng rất phổ biến.

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

Cài đặt thư viện OkHttp và Moshi.

Sử dụng 2 thư viện trên để lấy dữ liệu đổ vào ứng dụng.

Tạo project mới

Như thường lệ, chúng ta sẽ tạo một project mới với tên là JSONExample

Và chọn minSdk là 13:

Cài đặt OkHttp và Moshi

Cài đặt thư viện OkHttp và Moshi vào ứng dụng thật ra rất đơn giản. Do Android Studio đã tích hợp làm build system và chúng ta có thể lấy bất cứ thư viện nào lưu trên jCenter và Maven Central (2 website chứa thư viện / dependencies cho Java lớn nhất hiện nay).

Chúng ta thêm 2 dòng sau vào file build.gradle như thế này:

build.gradle

apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.howkteam.jsonexample" minSdkVersion 13 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile 'com.android.support:recyclerview-v7:24.2.1' compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.moshi:moshi:1.2.0' compile 'com.squareup.picasso:picasso:2.5.2' }

(Picasso là thư viện giúp hiển thị hình ảnh thuận tiện hơn, sẽ được sử dụng trong ví dụ).

Nhắc lại về Model và JSON

Khi các bạn làm về Android tức là các bạn đã biết về Java cơ bản, mà đã là Java cơ bản thì chắc chắn không xa lạ gì khái niệm Model.

Model là một lớp mẫu cho đối tượng nào đó. Ví dụ model Person thì sẽ có 2 trường là String name và int age chẳng hạn.

Thứ 2 là về định dạng dữ liệu JSON. Ở đây chúng ta sẽ lấy dữ liệu từ trang này:

https://api.github.com/users

Đây là API public của Github, trả về một danh sách các người dùng Github. Và cái chúng ta muốn là đưa danh sách này hiển thị thành RecyclerView trong Android cho dễ xem.

Để cho đơn giản thì chúng ta chỉ lấy 3 trường trong json là login, id và avatar_url.

Bước 1: Đầu tiên chúng ta tạo một file .java mới để làm model, lấy tên là User.java:

package com.howkteam.jsonexample; public class User { public String login; public int id; public String avatar_url; }

Đó, chỉ cần vậy thôi.

Bước 2: Tạo layout cho item của RecyclerView mà chúng ta muốn cho hiển thị:

Item_user.xml

Bước 3: Tạo cho RecyclerView. Để biết cách tạo, các bạn xem lại bài RECYCLERVIEW & VIEWHOLDER:

UserAdapter.java

Bước 4: Cuối cùng, chỉnh sửa lại file activity_main.xml, chúng tôi và thêm permission INTERNET cho AndroidManifest:

activity_main.xml

MainActivity.java

Và trong AndroidManifest:

Và chúng ta sẽ được kết quả:

Vậy lợi ích ở đây là gì?

Về bản chất, việc sử dụng 2 thư viện OkHttp và Moshi không khác gì so với dùng AyncTask kèm JSONObject - 2 thư viện có sẵn của Android, nhưng...

Android cho phép thao tác mạng trên UI Thread, do đó phải thực hiện theo kiểu bất đồng bộ. OkHttp hỗ trợ rất tốt việc này, mà code lại ngắn hơn do không phải viết class .

Moshi giúp chúng ta chuyển đổi thẳng từ tên các trường trong Model ra JSON.

Kết hợp cả 2 thư viện này với Picasso để hỗ trợ load ảnh, chúng ta đã viết được một chương trình con rất nhanh.

Kết luận

Qua bài này chúng ta đã nắm được cách sử dụng OkHttp theo kiểu bất đồng bộ thay cho AsyncTask, kết hợp với Moshi để xử lý dữ liệu JSON đổ vào danh sách trong Android.

Bài sau chúng ta sẽ tìm hiểu về PERMISSION TRONG ANDROID, vấn đề tưởng chừng nhỏ nhưng cũng có phần phức tạp.

Tải xuống Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học JSON và web API trong lập trình Android cơ bản dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.

Hướng Dẫn Xử Lý Đau Cổ Tay Khi Tập Thể Hình Trong Tích Tắc

Nguyên nhân bạn đau cổ tay khi tập thể hình

Theo Paul Mostoff – Trưởng khoa vật lý trị liệu ở New York, đau cổ tay khi tập thể hình có thể là do định vị cổ tay không đúng, cấu trúc cổ tay bị yếu và quá tải hoặc bị lạm dụng quá mức. Các gân của cổ tay có thể trở nên nóng, đau, viêm, sưng và thoái hóa.

Nếu không chú ý đến cổ tay bị đau, bạn có thể biến tình trạng đau cấp tính đơn giản trở nên nghiêm trọng và mãn tính hơn. Trong đó, thực hiện một bài tập cơ bản như chống đẩy sẽ giữ cổ tay ở vị trí mở rộng trong khi phải đỡ cả trọng lượng cơ thể. Điều này sẽ làm tăng áp lực qua ống cổ tay và khớp tay.

Cổ tay và cẳng tay có thể bị lạm dụng nhiều hơn trong quá trình tập luyện. Vì khớp vai thiếu khả năng vận động. Do đó, cơ cánh tay phải bù lại.

Dấu hiệu nhận biết đau cổ tay do tập thể hình

Các triệu chứng của bong gân cổ tay:

Đau

Sưng

Đau và ấm xung quanh vết thương

Trật hoặc rách ở cổ tay

Bầm tím

Không chuyển động được

Yếu hơn

Đau cổ tay khi tập thể hình được chia thành 3 mức độ:

Đau với tổn thương nhẹ ở dây chằng

Đau, tổn thương nặng hơn ở dây chằng, cảm thấy khớp lỏng lẻo và mất một số chức năng

Đau, dây chằng bị rách và khớp lỏng mất chức năng ở mức độ nghiêm trọng

Bạn nên làm gì khi chấn thương cổ tay?

Tin tốt là nếu bạn bị đau cổ tay mức độ nhẹ đến vừa thì chỉ cần thời gian để nó tự chữa lành. Để tăng tốc độ chữa lành đau cổ tay khi tập thể hình, bạn có thể:

Để cổ tay nghỉ ngơi trong ít nhất 48 tiếng

Chườm đá vào cổ tay để giảm đau và sưng. Làm điều đó trong 20 – 30 phút cách nhau 3 – 4 tiếng và trong 2 – 3 ngày hoặc cho đến khi hết đau

Băng cổ tay

Đặt cao cổ tay lên tim, lên gối để thả lỏng, tránh tác động mạnh

Uống thuốc giảm đau chống viêm: Các thuốc chống viêm không chứa steriod (NSAIDs) như Advil, aleve hoặc Motrin, sẽ giúp giảm đau và sưng. Tuy nhiên, những loại thuốc này có thể có tác dụng phụ như tăng nguy cơ chảy máu và loét. Các loại thuốc này chỉ nên được sử dụng khi bạn đã tham khảo ý kiến của bác sĩ.

Sử dụng nẹp để giữ cổ tay của bạn bất động. Điều này chỉ nên trong thời gian ngắn cho đến khi bạn gặp bác sĩ. Sau đó, người tập nên làm theo lời khuyên của bác sĩ về việc có nên tiếp tục sử dụng nẹp hay không. Sử dụng nẹp quá lâu cũng có thể dẫn đến cứng hoặc yếu cơ hơn trong một số trường hợp.

Chườm đá lên cổ tay bị đau

Thực hiện các động tác kéo giãn và dùng sức nếu bác sĩ khuyên bạn điều đó. Tốt nhất là bạn nên gặp một bác sĩ vật lý trị liệu để được hướng dẫn một lộ trình cụ thể cho tình trạng của mình.

Mức độ nghiêm trọng nhất của cổ tay, ví dụ như đứt dây chằng, có thể phải phẫu thuật để chữa trị. Đau cổ tay rất khó để ngăn chặn vì thường xảy ra do tai nạn. Ngay cả vận động viên được đào tạo tốt nhất cũng có thể bị đau cổ tay.

Nẹp cổ tay bị thương

Dù vậy, bạn vẫn nên tập luyện chính xác và an toàn từng động tác. Người tập có thể sử dụng bảo vệ cổ tay hoặc băng để tránh bị trượt và chấn thương cổ tay.

Tập thể hình chính xác và an toàn cùng LEEP.APP

Để tránh những chấn thương như đau cổ tay khi tập thể hình, bạn nên tập luyện cùng huấn luyện viên chuyên nghiệp. Huấn luyện viên sẽ là người chỉ cho bạn cách tập sao cho chính xác và an toàn để giảm tối đa khả năng bị chấn thương.

Thế nhưng, bạn thấy việc tìm huấn luyện viên phù hợp với nhu cầu quá khó hay thời gian biểu quá gò bó khiến bạn không có thời gian đến phòng tập. Vậy chúng tôi sinh ra là dành cho bạn, giải quyết hết những vấn đề đau đầu nói trên. Chỉ cần một nút chạm, bạn đã có huấn luyện viên theo nhu cầu, thỏa mái tập luyện mọi lúc mọi nơi.

Wrist pain https://www.webmd.com Ngày truy cập: 5/3/2020

Why planks and pushups are killing your wrist and what to do about it https://www.health.com Ngày truy cập: 5/3/2020

Nguồn tham khảo

Cập nhật thông tin chi tiết về Hướng Dẫn Xử Lý Json Trong Android trên website Uta.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!