1

大约一天以来,我一直在用头撞墙。我希望有人能帮帮忙。

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

我肯定会正确返回和解析数据,并且我尝试在 onPostExecute 中使用一个简单的数组和适配器,以确保它不是我的适配器类并且它仍然不起作用。

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

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 的片段支持库。

谢谢史蒂夫

4

1 回答 1

1

尝试

MyFragment.this.setListAdapter(适配器);

编辑:

你好,

我试过你的代码,甚至加载了视图

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

它对我来说很好,唯一可能的问题原因应该是:加载片段时视图不可见,或者一些类似的问题。

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

于 2013-01-22T12:43:11.353 回答