0

我有一个具有以下变量的活动

static CharSequence[] categories;

我正在使用 JSON 接收数据

try
{
    Thread cThread = new Thread(new getStringContent("http://192.168.0.101/curltest/getcategories.php"));
    cThread.start();            
}
catch(Exception ex)
{
    Log.i("YGo", ex.toString());
}

public class getStringContent implements Runnable {
        String suri;
        public getStringContent(String uri)
        {
            suri = uri; 
        }
        @Override
        public void run() {         
            try {
                JSONArray jsonArray = new JSONArray(getPageContent(suri));
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONArray jsonSArray = jsonArray.getJSONArray(i);
                    categories = new CharSequence[jsonArray.length()];
                    categories[i] = jsonSArray.getString(0);
                    Log.i("YGo", categories[i].toString());
                }               
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                Log.e("YGo", e.toString());
            }
            dialog.dismiss();
        }       
    }

在 GUI 线程中,如果我单击按钮,我想显示接收到的数据:

for(int i=0; i<categories.length; i++)
{
   Log.i("Ygo", String.valueOf(categories[i]));
   Log.i("Ygo", String.valueOf(selectedData[i]));
}
AlertDialog.Builder builder = new AlertDialog.Builder(PreferencesClass.this);
            builder.setTitle("Pick categories");

            builder.setMultiChoiceItems(categories, selectedData, onClickCatChooser);           
            builder.setPositiveButton("Ok", clickedOnClickCatOk);

            AlertDialog alert = builder.create();
            alert.show();

但在categories我有的变量中null,null,Data3,而不是Data1Data2只有null。为什么?

4

2 回答 2

4

线

categories = new CharSequence[jsonArray.length()];

应该在for循环之外。您在循环中的每次迭代中重置数据,因此最后您只剩下最后一次操作的数据。

于 2012-07-29T11:46:18.310 回答
1

可能是因为 data1&2 的路径没有正确定义 try categories = new CharSequence[jsonArray.length()]; 在 for 循环之外。

于 2012-07-29T11:48:41.257 回答