gpt4 book ai didi

Android ListFragment 无法从异步任务填充

转载 作者:行者123 更新时间:2023-11-30 03:48:58 26 4
gpt4 key购买 nike

我已经用头撞墙了大约一天了。我希望有人能提供帮助。

我的程序在异步任务中将一些 Json 加载并解析到对象数组中。这个异步任务是从我的 ListFragment 类调用的,数据在 onPostExecute 中发回。不会抛出任何错误,并且列表加载动画会正常消失。但无论我做什么,列表都不会被填充。

我确实得到了正确返回和解析的数据,我已经尝试在 onPostExecute 中使用一个简单的数组和适配器来确保它不是我的适配器类,但它仍然不起作用。

我已将下面的代码简化为示例。下面的代码等待 1 秒,然后删除加载动画。但不填充列表。如果您从 doInBackground 方法中删除 sleep ,它会完美运行。

public class MyFragment extends ListFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

AsyncTask<Void, Void, String> task = new AsyncTask<Void,Void,String>()
{

@Override
protected String doInBackground(Void... params) {

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;

}

@Override
protected void onPostExecute(String result) {

String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1, values);

setListAdapter(adapter);

}

};

task.execute();

}

}

正如我所说,如果您删除我用来模拟 json 加载的 Thread.sleep(1000),它会正常工作。

如果有任何不同,我正在使用 2.3 的 fragment 支持库。

谢谢史蒂夫

最佳答案

尝试

MyFragment.this.setListAdapter(适配器);

编辑:

你好,

我试过你的代码,甚至加载 View

    mLoadedFragment = new MyFragment();
transaction.replace(R.id.relativeLayout, mLoadedFragment);
transaction.commit();

它对我来说工作正常,唯一可能的问题应该是:加载 fragment 时 View 不可见,或一些类似的问题。

您可能想要检查您打算加载 fragment 的布局。

关于Android ListFragment 无法从异步任务填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com