Значение в счетчике после разбора XML

1

У меня проблема с отображением значения в spinner после разбора XML. Я провел разбор XML, и теперь я хочу показать результат анализа в spinner, но мое приложение закроется при запуске. Ниже приведен фрагмент кода.

public class parsedspinner extends Activity {
    String name = null;
    private String array_spinner[];

    /** Create Object For SiteList Class */
    SitesList sitesList = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try {


            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();

            /** Send URL to parse XML Tags */
            URL sourceUrl = new URL(
                    "http://www.arteonline.mobi/iphone/output.php?estado=1");

            /** Create handler to handle XML Tags ( extends DefaultHandler ) */
            MyXMLHandler myXMLHandler = new MyXMLHandler();
            xr.setContentHandler(myXMLHandler);
            xr.parse(new InputSource(sourceUrl.openStream()));

        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }
        /** Get result from MyXMLHandler SitlesList Object */
         sitesList = MyXMLHandler.sitesList;
        /** Assign textview array lenght by arraylist size */


        /** Set the result text in textview and add it to layout */
        for (int i = 0; i < sitesList.getName().size(); i++) {

            name=sitesList.getName().get(i);
            array_spinner=new String[sitesList.getName().size()];
            array_spinner[i]=name;
            Spinner s = (Spinner) findViewById(R.id.Spinner01);
**//till here no problem** when using array adapter then forse close..

            **ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_spinner_item, array_spinner);
            s.setAdapter(adapter)**;
**when i comented array adapterand set adapter above then values also show in log cat then defnetly problem in above 2 lines what is not gettig????pls help me...**

            Log.i("array_spinner"+i,array_spinner[i]);
        }
}

Ошибка

05-16 15:51:33.506: ERROR/AndroidRuntime(1229): FATAL EXCEPTION: main
05-16 15:51:33.506: ERROR/AndroidRuntime(1229): java.lang.NullPointerException
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:192)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.View.measure(View.java:8313)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.View.measure(View.java:8313)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.View.measure(View.java:8313)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.View.measure(View.java:8313)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.View.measure(View.java:8313)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.os.Looper.loop(Looper.java:123)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at android.app.ActivityThread.main(ActivityThread.java:3683)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at java.lang.reflect.Method.invokeNative(Native Method)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at java.lang.reflect.Method.invoke(Method.java:507)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-16 15:51:33.506: ERROR/AndroidRuntime(1229):     at dalvik.system.NativeStart.main(Native Method)
05-16 15:51:33.525: WARN/ActivityManager(60):   Force finishing 
  • 0
    Не могли бы вы вставить трассировку стека для ошибки FC? Спасибо!
  • 0
    @rekaszeru ..pasted
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Вы должны удалить

  • array_spinner инициализация и
  • ArrayAdapter декларация и добавив код из цикла for,

поэтому он не будет применяться для каждого элемента в  ваш список:

array_spinner = new String[sitesList.getName().size()];
for (int i = 0; i < sitesList.getName().size(); i++)
{
    name = sitesList.getName().get(i);
    array_spinner[i] = name;
    Log.i("array_spinner" + i, array_spinner[i]);
}
Spinner s = (Spinner) findViewById(R.id.Spinner01);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, array_spinner);
s.setAdapter(adapter);

NullPointerException был сброшен из-за того, что array_spinner получил инициализированное столько раз, сколько у вас было, и поэтому он содержал только одни данные, а на других позициях он имел null.

Обновление

Если вам не нужен этот массив array_spinner String, вы можете его избежать, инициализируя ArrayAdapter следующим образом:

sitesList = MyXMLHandler.sitesList;
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.simple_spinner_item, sitesList.getName());
s.setAdapter(adapter);

Таким образом, вам не понадобится весь этот for цилиндр!

  • 0
    это проблема для фрагмента кода цикла ????????????
  • 0
    Пожалуйста, смотрите мое обновление для исправления ошибки / устранения исключения.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню