- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试为 SAX 解析器设置 UI 线程和处理程序。这是我没有实现 UI 线程和处理程序的解析器:
public class AndroidXMLReader extends ListActivity {
private XMLFeed myXMLFeed = null;
/** Called when the activity is first created. */
@Ghi đè
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
thiết lậpContentView(R.layout.main);
thử {
URL xmlUrl = new URL("http://feeds.bbci.co.uk/news/uk/rss.xml");
SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
XMLHandler myXMLHandler = new XMLHandler();
myXMLReader.setContentHandler(myXMLHandler);
InputSource myInputSource = new InputSource(xmlUrl.openStream());
myXMLReader.parse(myInputSource);
myXMLFeed = myXMLHandler.getFeed();
}
catch (MalformedURLException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (ParserConfigurationException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (SAXException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (IOException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
if (myXMLFeed!=null)
{
ArrayAdapter adapter =
new ArrayAdapter(this,
android.R.layout.simple_list_item_1,myXMLFeed.getList());
setListAdapter(adapter);
}
}
}
然后我尝试添加 UI 线程和处理程序。 编辑 1 - 这是根据 HellBoy 的回复修改后的代码:
public class AndroidXMLReader extends ListActivity {
private static final int THREAD_FINISHED = 0;
private XMLFeed myXMLFeed = null;
private ProgressDialog progressDialog;
private Button refreshFeed;
Handler handler = new Handler();
/** Called when the activity is first created. */
@Ghi đè
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
thiết lậpContentView(R.layout.main);
initControls();
}
public void initControls(){
refreshFeed = (Button) findViewById(R.id.refresh);
refreshFeed.setOnClickListener(new Button.OnClickListener(){
@Ghi đè
public void onClick(View v){
progressDialog = ProgressDialog.show(AndroidXMLReader.this, "",
"Please wait for few seconds...", true);
processThread();
}
});
}
protected void processThread() {
Thread t = new Thread()
{
public void run(){
getNews();
//UI();
// Sends message to the handler so it updates the UI
handler.sendMessage(Message.obtain(mHandler, THREAD_FINISHED));
; }
};
t.start();
}
private Handler mHandler = new Handler() {
@Ghi đè
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case THREAD_FINISHED:
progressDialog.dismiss();
phá vỡ;
};
};
};
private void getNews(){
thử {
URL xmlUrl = new URL("http://feeds.bbci.co.uk/news/uk/rss.xml");
SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
XMLHandler myXMLHandler = new XMLHandler();
myXMLReader.setContentHandler(myXMLHandler);
InputSource myInputSource = new InputSource(xmlUrl.openStream());
myXMLReader.parse(myInputSource);
myXMLFeed = myXMLHandler.getFeed();
}
catch (MalformedURLException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (ParserConfigurationException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (SAXException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
catch (IOException e) {
// TODO Khối catch được tạo tự động
e.printStackTrace();
}
if (myXMLFeed!=null){
ArrayAdapter adapter =
new ArrayAdapter(this,
android.R.layout.simple_list_item_1,myXMLFeed.getList());
setListAdapter(adapter);
}
}
}
目前它卡在进度对话框中,我不明白为什么...任何帮助将不胜感激。
编辑 1 - 我现在收到的错误消息是:
Only the original thread that created a view hierarchy can touch its views.
10-04 21:39:27.570: ERROR/AndroidRuntime(17454): at com.android.testfeed3.AndroidXMLReader.getNews(AndroidXMLReader.java:121)
10-04 21:39:27.570: ERROR/AndroidRuntime(17454): at com.android.testfeed3.AndroidXMLReader.access$2(AndroidXMLReader.java:85)
10-04 21:39:27.570: ERROR/AndroidRuntime(17454): at com.android.testfeed3.AndroidXMLReader$3.run(AndroidXMLReader.java:60)
10-04 21:39:27.645: WARN/ActivityManager(2703): Force finishing activity com.android.testfeed3/.AndroidXMLReader
10-04 21:39:33.495: ERROR/WindowManager(17454): Activity com.android.testfeed3.AndroidXMLReader has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40527a20 that was originally added here
10-04 21:39:33.495: ERROR/WindowManager(17454): android.view.WindowLeaked: Activity com.android.testfeed3.AndroidXMLReader has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40527a20 that was originally added here
10-04 21:39:33.495: ERROR/WindowManager(17454): at com.android.testfeed3.AndroidXMLReader$2.onClick(AndroidXMLReader.java:50)
Bất kỳ sự giúp đỡ nào cũng sẽ được đánh giá cao.
1 Câu trả lời
为了更改 UI,命令必须来自创建它的线程,即主(或 UI)线程。
快速浏览一下,这一行:
if (myXMLFeed!=null)
{
ArrayAdapter adapter =
new ArrayAdapter(this,
android.R.layout.simple_list_item_1,myXMLFeed.getList());
setListAdapter(adapter);
}
需要放在一个单独的处理程序中,并从您的新线程调用该处理程序。
关于sax - 如何为 SAX 解析器设置线程和处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630332/
Tôi đã cố gắng thiết lập luồng UI và trình xử lý cho trình phân tích cú pháp SAX. Đây là trình phân tích cú pháp của tôi mà không triển khai luồng UI và trình xử lý: public class AndroidXMLReader extends ListActiv
Tôi đang cố đọc một tài liệu XML lớn và muốn đọc nó thành từng phần, thay vì sử dụng cách đọc toàn bộ tệp vào bộ nhớ của XmlDocument. Tôi biết tôi có thể sử dụng XmlTextReader để làm điều này, nhưng tôi muốn
Tôi đang cố gắng phân tích 11384 tệp XML thành cơ sở dữ liệu SQLite. Một trong những điều này: ]> 1 2 Tôi đang sử dụng trình phân tích cú pháp SAX: pub
Tôi cần phân tích cú pháp một tệp XML bằng Perl. Các phần của tệp được lưu trữ riêng biệt và được chèn vào dưới dạng các thực thể hệ thống. Tuy nhiên, vấn đề này rất phổ biến. Nhưng tôi không thể tìm được thông tin nào để giải quyết vấn đề đó. ]> &externalContent; Khi sử dụng
Tôi đang cố gắng phân tích định nghĩa tin nhắn HL7 từ xsd. Tôi chia định nghĩa lược đồ thành hai tệp. Tệp đầu tiên chứa định nghĩa tin nhắn thực tế, tệp thứ hai chứa định nghĩa phân đoạn trong tin nhắn. Tôi đang cố gắng điều chỉnh mã mẫu để phân tích cú pháp XML từ đây https://gis
Tôi đang sử dụng SAX để phân tích biểu thức MathML (mặc dù thực tế là nó là MathML có lẽ không hoàn toàn liên quan). Ví dụ chuỗi đầu vào là λ. Để SAX giải quyết
Tôi đang cố gắng phân tích cú pháp một tệp XML bằng Java và SAX cho thiết bị Android. Tôi lấy thông tin này từ Internet và khi phân tích, tôi nhận được lỗi ExpatException: Ký tự 'é' không đúng định dạng (mã thông báo không hợp lệ). Có bất kỳ
Tôi đang cố gắng đọc một tệp xml bằng sax trong java. Tôi chỉ nhận được kết quả đầu ra cho endElement nhưng không hiểu lỗi ở startElement. Đây là trình xử lý của tôi: public class XMLHan
Tôi đang sử dụng trình phân tích cú pháp SAX để phân tích cú pháp XML có thẻ cha và thẻ con như thế này:
Tôi đang cố gắng trích xuất dữ liệu từ nguồn cấp dữ liệu RSS. Liên kết RSS - http://www.thehindu.com/sport/?service=rss ? Đây là phương thức ký tự của trình xử lý mặc định của tôi. công chúng vo
Tôi đã thử thực thi đoạn mã sau nhưng trình phân tích cú pháp SAX của tôi không gọi phương thức startElement. Dưới đây là mã của tôi: package getTableStructure; import java.util.Lis
Tôi đang thực hiện một yêu cầu trong đó tôi cần phải chia nhỏ một tệp XML lớn và xử lý thêm. Đây là ví dụ về XML có thể chuyển thành một dòng duy nhất. Yongjin Đây là mã của tôi: import java.util.Arrays; import java
Tôi đang cố gắng đưa nội dung của một thẻ vào một biến trong trình phân tích cú pháp Java Sax của mình. Tuy nhiên, phương thức Characters chỉ trả về một mảng Char. Có cách nào để chuyển đổi mảng Char sang Int không? ? ? công khai void c
Tôi có đoạn mã sau đây.. System.setProperty("http.proxyHost","176.6.129.25") ;
Cách sử dụng SAX để hiển thị tên của nút ở độ sâu tối đa trong cây. Thuật toán hoạt động tốt để tôi hiểu khái niệm. Ví dụ, tôi nên sử dụng StartElement, EndElement, StartDocument, EndDocument như thế nào
Có cách khả thi nào để tìm thẻ XML tương ứng bằng cách sử dụng lớp xử lý mặc định không? Ví dụ... 1 1 Tôi muốn sử dụng các phương thức startElement() và endElement()
Tôi muốn sử dụng trình phân tích cú pháp SAX để phân tích một số dữ liệu từ tệp xml. XML của tôi như sau: Pies & past Fruits Để phân tích dữ liệu này, tôi đã mở rộng DefaultHandler. Đầu ra đã phân tích
Tôi đang xây dựng một quy trình tạo XML (từ nhiều nguồn khác nhau và cho nhiều mục đích khác nhau mà tôi không biết trước) và tôi muốn đưa XML đã tạo trực tiếp vào quy trình xử lý XML chuẩn như SAX, StAX và DOM. Tôi đã làm điều đó
Tôi có một tệp XML được tạo bởi MS Excel chứa các thành phần sau: 22. Department"GS "NAES "ABCDEF"
Tôi đang gặp sự cố khi mở tệp XML dump của stackoverflow bằng trình phân tích cú pháp java sax. Nó nhận ra phần cuối của mỗi phần tử, nhưng có vẻ như bỏ qua phương thức startElement. Tôi sử dụng mã mẫu: thử {
Tôi là một lập trình viên xuất sắc, rất giỏi!