Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从未调用AsyncTask onPostExecute_Java_Android_Networking_Android Asynctask - Fatal编程技术网

Java 从未调用AsyncTask onPostExecute

Java 从未调用AsyncTask onPostExecute,java,android,networking,android-asynctask,Java,Android,Networking,Android Asynctask,我需要创建一个返回字符串[]的AsyncTask类,返回的字符串[]将用于创建列表,因此我想在AsyncTask类中创建ListActivity,但onPostExecute方法不起作用,它从未被调用。我的代码: public class AsyncReadPrices extends AsyncTask<Object, String[], String[]>{ static String url = "http://www.mywebsite.com/"; static Strin

我需要创建一个返回字符串[]的AsyncTask类,返回的字符串[]将用于创建列表,因此我想在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));
        }
    };
}
公共类AsyncReadPrices扩展了AsyncTask{
静态字符串url=”http://www.mywebsite.com/";
静态字符串ConfPath=新字符串();
受保护字符串[]doInBackground(对象…参数){
字符串[]菜单=新字符串[(int)参数[1]];
试一试{
BufferedReader=新的BufferedReader(新的InputStreamReader(新的URL(URL+params[0]).openStream());
字符串行=reader.readLine();
对于(int k=0;k<(int)参数[1];k++){
菜单[k]=行;
line=reader.readLine();
}
Log.i(“检查1”,”);
返回菜单;
}
捕获(IOE异常){
e、 printStackTrace();
}
Log.i(“检查2”和“);
返回菜单;
}
@凌驾
受保护的void onPostExecute(最终字符串[]菜单){
Log.i(“它有效!”,“”);
新ListActivity(){
@凌驾
public void setListAdapter(ListAdapter适配器){
Log.i(“字符串”,菜单[0]);
setListAdapter(新的ArrayAdapter(这个,android.R.layout.simple_可扩展_列表_项_1,菜单));
}
};
}

}

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

请尝试使用以下代码:-

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


    itemListAdapter = new ItemListBaseAdapter( 
                YourActivity.this, data);
    listView.setAdapter(itemListAdapter); 
}
//listView应该在活动类内部初始化


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

您能再解释一下吗?
doInBackground()
是否被调用?它会崩溃吗。还有什么没有发生?调用了AsyncTask类,doInBackground工作,但没有调用onPostExecute方法,我不知道为什么不确定
new ListActivity()
,但这不是创建活动的正确方法。这个日志是否被称为,
log.i(“它工作!”,“”)?不,Log.i(“它有效!”,“”);从未调用,与方法
new ListActivity(){
相同,您希望它做什么?问题是在ListActivity之前,onPostExecute没有运行,方法被忽略