0

**配列アダプターのスレッド外の stringArray にアクセスする方法。次のコードでは、以下の配列アダプタで受け入れられるスレッド内で stringArray が宣言されています。

コードを実行しようとすると、配列アダプターに null 配列を提供する null 例外がスローされます。( ...マークされ たコードに焦点を当ててください)

source = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1)
 dest = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView2);

    readStopName();

                   **adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,stringArray);**
    //how to access the stringArray outside a Thread in array adapter 

                   source.setAdapter(adapter);
                      dest.setAdapter(adapter);
                   source.setThreshold(2);
                   dest.setThreshold(2);
                addListenerOnButton();
            }

            public void readStopName() 
            {
                new Thread() 
                {
                    public void run() 
                    {
                        // TODO Run network requests here.


                        /* try */
                        try 
                        {
                            readFeed = builder.toString();
                            json = new JSONObject(readFeed);
                            JSONArray jsonArray = new JSONArray(
                                    json.optString("ResultSet"));
                            System.out.println("OKAY_4!!");

                         stringArray = new ArrayList<String>();
                            //JSONArray jsonArray = new JSONArray();
                            for(int i = 1, count = jsonArray.length(); i< count; i++)
                            {
                                try 
                                {
                                     json = jsonArray.getJSONObject(i);
                                     System.out.println("OKAY!!" +json.toString());
                                    **stringArray.add(json.toString());**
                                   //how to access the stringArray outside a Thread in array adapter 

                                }

                                catch (JSONException e) 
                                {
                                    e.printStackTrace();
                                }
                            } 

                        }
                         catch (Exception e) {
                            e.printStackTrace();
                        }

                    }
                }.start();
                System.out.println("OKAY!!" + builder.toString());


            }
4

0 に答える 0