2012-01-05 22 views
10

Trong ứng dụng Android của tôi tôi thực hiện một bánh mì nướng đơn giảnchars đặc biệt là thay thế bằng một hình vuông trong android ứng dụng

Toast.makeText(
     parent.getApplicationContext(), 
     parent.getResources().getIdentifier(result, "string", 
     parent.getPackageName()), Toast.LENGTH_LONG).show(); 

này

parent.getResources().getIdentifier(result, "string", parent.getPackageName()) 

lấy một chuỗi có phù hợp với tên là kết quả của strings.xml. Tôi có một tệp strings.xml cho ngôn ngữ tiếng Anh và tiếng Đức. Vấn đề là các ký tự đặc biệt trong tiếng Đức như Ü Ö Ä không được hiển thị chính xác. Chúng được thay thế bằng một biểu tượng hình vuông.

Chuỗi strings.xml được mã hóa utf-8.

Sự cố xảy ra ở đâu và làm cách nào để khắc phục sự cố?

+1

Đừng sử dụng 'getApplicationContext()' trừ khi bạn biết ** chính xác * tại sao * bạn cần nó **. Trong trường hợp này, bạn chắc chắn không cần nó. Vui lòng sử dụng 'parent', không phải' parent.getApplicationContext() '. Tôi nghi ngờ rằng sẽ giải quyết vấn đề của bạn, nhưng tôi chắc chắn sẽ bắt đầu ở đó, vì việc lạm dụng 'Application' gây ra hành vi UI lạ. – CommonsWare

+0

Bánh mì nướng được thực hiện trong một lớp kéo dài AsyncTask và không hoạt động. Vì vậy, cha mẹ là hoạt động tạo ra nhiệm vụ ... –

+1

Điều đó vẫn có nghĩa là bạn nên sử dụng 'parent', không phải' parent.getApplicationContext() '. – CommonsWare

Trả lời

2

ArtWorkAD,

Có vẻ như vấn đề của bạn đã được gây ra bởi thực tế là phương pháp Toast.makeText() không sử dụng Charset đúng khi kéo nhân vật đặc biệt của bạn từ các tài nguyên.

Tôi đề nghị như một bước gỡ lỗi bạn kéo chuỗi giảm so với các nguồn lực independantly và sử dụng quá tải

Toast.makeText(Context context, CharSequence text, int duration).show(); 

để làm cho văn bản của bạn. Bằng cách này, bạn có thể xác nhận rằng văn bản là những gì bạn mong đợi và thu hẹp sự cố của bạn.

0

Thay vì sử dụng Toast tin nhắn, bạn có thể sử dụng hộp thoại tùy chỉnh trong đó bạn có thể có trên TextView để hiển thị string.Now này sử dụng

TextView textView=new TextView(this); 
    textView.setText(Html.fromHtml("your string")); 

Hope công việc này cho bạn, nhưng đã không cố gắng

Các vấn đề liên quan