Your onCreate() method has several huge flaws:1) onCreate prepares you dịch - Your onCreate() method has several huge flaws:1) onCreate prepares you Việt làm thế nào để nói

Your onCreate() method has several

Your onCreate() method has several huge flaws:

1) onCreate prepares your Activity - so nothing that you do here will be made visible to the user until this method finishes! For example - you will never be able to alter a TextView's text here more than ONE time as only the last change will be drawn and thus visible to the user!

2) Keep in mind that an Android program will - by default - run in ONE thread only! Thus: never use Thread.sleep() or Thread.wait() in your main thread which is responsible for your UI! (read "Keep your App Responsive" for further information!)

What your initialization of your Activity does is:

for no reason you create a new TextView object t!
you pick your layout's TextView in the variable t later.
you set the text of t (but keep in mind: it will be displayed only after onCreate() finishes and the main event loop of your application runs!)
you wait for 10 seconds within your onCreate method - this must never be done as it stops all UI activity and will definitely force an ANR (Application Not Responding, see link above!)
then you set another text - this one will be displayed as soon as your onCreate() method finishes and several other Activity lifecycle methods have been processed!
The solution:

Set text only once in onCreate() - this must be the first text that should be visible.

Create a Runnable and a Handler

private final Runnable mUpdateUITimerTask = new Runnable() {
public void run() {
// do whatever you want to change here, like:
t.setText("Second text to display!");
}
};
private final Handler mHandler = new Handler();
install this runnable as a handler, possible in onCreate() (but read my advice below):

// run the mUpdateUITimerTask's run() method in 10 seconds from now
mHandler.postDelayed(mUpdateUITimerTask, 10 * 1000);
Advice: be sure you know an Activity's lifecycle! If you do stuff like that in onCreate()this will only happen when your Activity is created the first time! Android will possibly keep your Activity alive for a longer period of time, even if it's not visible! When a user "starts" it again - and it is still existing - you will not see your first text anymore!

=> Always install handlers in onResume() and disable them in onPause()! Otherwise you will get "updates" when your Activity is not visible at all! In your case, if you want to see your first text again when it is re-activated, you must set it in onResume(), not onCreate()!
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Phương pháp onCreate() của bạn có một số sai sót lớn:1) onCreate chuẩn cho hoạt động của bạn - do đó, không có gì mà bạn làm ở đây sẽ được thực hiện cho người dùng cho đến khi phương pháp này kết thúc! Ví dụ: -, bạn sẽ không bao giờ có thể thay đổi một TextView văn bản ở đây hơn một thời gian như chỉ là sự thay đổi cuối cùng sẽ được rút ra và do đó hiển thị cho người dùng!2) Hãy nhớ rằng một chương trình Android sẽ - theo mặc định - chạy trong một chủ đề chỉ! Vì vậy: không bao giờ sử dụng Thread.sleep() hoặc Thread.wait() trong chủ đề chính của bạn mà là chịu trách nhiệm về giao diện của bạn! (đọc "Giữ của bạn ứng dụng đáp ứng" cho biết thêm thông tin!)Những gì bạn khởi tạo của hoạt động của bạn hiện là:không có lý do bạn tạo ra một mới TextView đối tượng t!bạn chọn bố trí của bạn TextView trong t biến sau đó.bạn đặt các văn bản của t (nhưng hãy lưu ý: nó sẽ được hiển thị chỉ sau khi onCreate() kết thúc và vòng lặp chính sự kiện của ứng dụng của bạn chạy!)bạn chờ đợi 10 giây trong phương pháp onCreate của bạn - điều này không bao giờ phải được thực hiện như nó dừng tất cả giao diện người dùng hoạt động và chắc chắn sẽ buộc một ANR (ứng dụng không đáp ứng, xem liên kết ở trên!)sau đó bạn thiết lập một văn bản - điều này sẽ được hiển thị ngay sau khi kết thúc của bạn phương pháp onCreate() và một số khác phương pháp vòng đời hoạt động đã được xử lý!Giải pháp:Thiết lập văn bản chỉ một lần trong onCreate() - điều này phải là các văn bản đầu tiên nên được nhìn thấy.Tạo một Runnable và trình xử lýBãi đỗ riêng mUpdateUITimerTask cuối cùng Runnable = mới Runnable() {} khu vực void Run {} làm bất cứ điều gì bạn muốn thay đổi ở đây, như: t.setText ("hai văn bản Hiển thị!"); }};tư nhân cuối cùng xử lý mHandler = mới Handler();cài đặt này runnable là một xử lý, có thể có trong onCreate() (nhưng đọc lời khuyên của tôi dưới đây):chạy của mUpdateUITimerTask Run phương pháp trong 10 giây nữamHandler.postDelayed (mUpdateUITimerTask, 10 * 1000);Lời khuyên: Hãy chắc chắn bạn biết một hoạt động vòng đời! Nếu bạn công cụ như vậy trong onCreate () điều này sẽ chỉ xảy ra khi hoạt động của bạn được tạo ra lần đầu tiên! Android sẽ có thể giữ cho hoạt động của bạn sống trong một thời gian dài của thời gian, ngay cả khi nó không phải là có thể nhìn thấy! Khi một người sử dụng "bắt đầu" nó trở lại - và đó vẫn sẵn có - bạn sẽ không thấy văn bản đầu tiên của bạn nữa!= > Luôn luôn cài đặt trình xử lý trong onResume() và vô hiệu hóa chúng trong onPause()! Nếu không, bạn sẽ nhận được "Cập Nhật" khi hoạt động của bạn không phải là có thể nhìn thấy ở tất cả! Trong trường hợp của bạn, nếu bạn muốn xem văn bản đầu tiên của bạn một lần nữa khi nó được tái kích hoạt, bạn phải đặt nó trong onResume(), không onCreate()!
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Phương pháp của bạn onCreate () có một số sai sót rất lớn: 1) onCreate chuẩn bị hoạt động của bạn - vì vậy không có gì mà bạn làm ở đây sẽ trở thành hiện thực cho người sử dụng cho đến khi phương thức này kết thúc! Ví dụ: - bạn sẽ không bao giờ có thể làm thay đổi văn bản của TextView đây hơn ONE thời gian như chỉ có sự thay đổi cuối cùng sẽ được rút ra và do đó có thể nhìn thấy những người sử dụng! 2) Hãy nhớ rằng một chương trình Android sẽ - theo mặc định - chạy trong ONE sợi chỉ! Như vậy: không bao giờ sử dụng Thread.sleep () hoặc Thread.wait () trong thread chính của bạn có trách nhiệm cho giao diện người dùng của bạn! (Đọc "Giữ App của bạn Responsive" để biết thêm thông tin!) gì khởi tạo của bạn Hoạt động của bạn là: ! không có lý do bạn tạo ra một đối tượng TextView mới t . bạn chọn TextView bố trí của bạn trong t biến sau đó bạn thiết lập các văn bản của t (nhưng hãy nhớ: nó sẽ được hiển thị chỉ sau onCreate () kết thúc và vòng lặp sự kiện chính của chạy ứng dụng của bạn!) bạn chờ 10 giây trong phương pháp onCreate của bạn - điều này không bao giờ được thực hiện như là nó dừng lại tất cả các hoạt động giao diện người dùng và sẽ chắc chắn buộc một ANR (Application Không ứng, nhìn thấy link ở trên!) sau đó bạn thiết lập một văn bản khác - điều này sẽ được hiển thị ngay sau khi onCreate () phương pháp hoàn thiện của bạn và một số phương pháp Hoạt động vòng đời khác đã được xử lý! Giải pháp: văn bản Thiết chỉ một lần trong onCreate () - điều này phải là văn bản đầu tiên có thể thấy được. Tạo một Runnable và một Handler tin cuối cùng Runnable mUpdateUITimerTask = Runnable mới () { public void run () { // thực hiện bất cứ điều gì bạn muốn thay đổi ở đây, giống như : t.setText ("text thứ hai để hiển thị!"); } }; thức Handler mHandler = new Handler tin (); cài đặt Runnable này như là một xử lý, có thể trong onCreate () (nhưng đọc những lời khuyên dưới đây của tôi): // run chạy phương pháp của mUpdateUITimerTask () trong 10 giây từ bây giờ mHandler.postDelayed (mUpdateUITimerTask, 10 * 1000), Lời khuyên: hãy chắc chắn bạn biết vòng đời của một Hoạt động! Nếu bạn làm công cụ như thế trong onCreate () này sẽ chỉ xảy ra khi hoạt động của bạn được tạo ra lần đầu tiên! Android có thể sẽ tiếp tục hoạt động của bạn sống trong một thời gian dài, thậm chí nếu nó không thể nhìn thấy! Khi một người dùng "bắt" nó một lần nữa - và nó vẫn còn tồn tại - bạn sẽ không thấy văn bản đầu tiên của bạn nữa => Luôn luôn cài đặt xử lý trong onResume () và vô hiệu hóa chúng trong onPause ()! Nếu không, bạn sẽ nhận được "cập nhật" khi hoạt động của bạn không thể nhìn thấy ở tất cả! Trong trường hợp của bạn, nếu bạn muốn xem văn bản đầu tiên của bạn một lần nữa khi nó được tái kích hoạt, bạn phải đặt nó trong onResume (), không onCreate ()!































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: