Android: вложенный, если утверждения переходят между утверждениями - PullRequest
0 голосов
/ 22 января 2011

В моем приложении для Android я пытаюсь прочитать XML-файл, используя XMLPullParser, используя следующий код:

while (eventType != XmlPullParser.END_DOCUMENT) 
                {
                    if (eventType == XmlPullParser.START_TAG) 
                    {
                        s = xpp.getName();
                        if (xpp.getName().equalsIgnoreCase("container"))
                        {
                            state = stateContainer;
                            con = new Container();
                            con.setId(xpp.getAttributeValue(0));
                            con.setParentId(xpp.getAttributeValue(1));
                            con.setRestricted(xpp.getAttributeValue(2));
                        }
                        else if (xpp.getName().equalsIgnoreCase("title")) 
                        {
                            state = stateTitle;
                        } 
                        else 
                        {
                            state = stateUnknown;
                        }
                    } 
                    else if (eventType == XmlPullParser.TEXT) 
                    {
                        s = xpp.getText();
                        if (state == stateTitle) 
                        {
                            con.setTitle(s);
                        }
                    } 
                    else if (eventType == XmlPullParser.END_TAG) 
                    {
                        s = xpp.getText();
                        if (xpp.getText().equalsIgnoreCase("container")) 
                        {
                            listAdapter.add(con);
                        }
                    }
                    eventType = xpp.next();
                }

Однако, похоже, что вы попали в строку 'listAdapter.add (con);' когда ни одно из других предложений if не является истинным в других операторах if. Например:

else if (eventType == XmlPullParser.TEXT) возвращает true. Затем он пытается if (state == stateTitle), который возвращает false. Он должен перейти к eventType == xpp.next();, но вместо этого перейти к listAdapter.add(con);, который вложен в другой оператор if. Это также происходит с некоторыми другими операторами if.

Я бы сказал, что я не новичок, когда дело доходит до программирования, но я не могу понять, откуда эта проблема!

Спасибо

1 Ответ

2 голосов
/ 23 января 2011

Магии нет.

Если во время отладки вы видите поток управления, действующий так, как вы его описываете, то, вероятно, код, который вы выполняете, не соответствует источнику. Попробуйте сделать чистую и полную перестройку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...