从未调用AsyncTask onPostExecute

时间:2015-01-05 18:53:19

标签: java android networking android-asynctask

我需要创建一个返回String []的AsyncTask类,返回的String []将用于创建列表,所以我想在AsyncTask类中创建ListActivity,但是onPostExecute方法不起作用,永远不会被称为。我的代码:

public class AsyncReadPrices extends AsyncTask<Object, String[], String[]>{
static String url = "http://www.mywebsite.com/";
static String ConfPath = new String();

    protected String[] doInBackground(Object... params){
        String[] menus = new String [(int) params[1]];
        try{

            BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url+params[0]).openStream()));
            String line = reader.readLine();
            for (int k = 0; k < (int)params[1]; k++) {
                menus[k] = line;
                line = reader.readLine();
            }
            Log.i("check 1","");
            return menus;
        }
        catch (IOException e){
            e.printStackTrace();
        }
        Log.i("check 2","");
        return menus;
    }

@Override
protected void onPostExecute(final String[] menu) {
    Log.i("It works!","");
    new ListActivity(){
        @Override
        public void setListAdapter(ListAdapter adapter) {
            Log.i("string", menu[0] );
            setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, menu));
        }
    };
}

}

1 个答案:

答案 0 :(得分:0)

请避免在ListActivity()方法中使用onPostExecute()。您应该使用返回的值更新AdapterArrayList,然后使用相同的ArrayList填充列表。

请尝试使用此代码: -

 @Override 
 protected void onPostExecute(final String[] menu) {


    itemListAdapter = new ItemListBaseAdapter( 
                YourActivity.this, data);
    listView.setAdapter(itemListAdapter); 
}

//应该在活动类

中更早地初始化listView

// itemListAdapter如果您使用的是自定义适配器,则直接使用