Java 从未调用AsyncTask onPostExecute
我需要创建一个返回字符串[]的AsyncTask类,返回的字符串[]将用于创建列表,因此我想在AsyncTask类中创建ListActivity,但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
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没有运行,方法被忽略