我试图从服务器获取菜单项的json列表,对其进行解析,并将其显示在片段视图中。完整的代码在这里:http://pastebin.com/8UEgcyfa

在添加用于获取json和解析的代码之前,应用程序仅显示了来自字符串资源的硬编码菜单项列表,如下所示:

String[] adobe_products = getResources().getStringArray(R.array.adobe_products);

// Binding resources Array to ListAdapter
this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_viewdishes, R.id.label, adobe_products));


这是正确的工作。在尝试实际打印解析后接收到的菜单项时,我在onPostExecute方法中执行了此操作(请参见完整代码),其中menuNameArray(我认为)正确保存了我实际上需要在ListView上显示的菜单项数组:

this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_viewdishes, R.id.label, adobe_products));


IntelliJ IDEA此时会引发错误:Cannot resolve method setListAdapter。我以为实际上需要调用它的ViewDishes.setListAdapter,但是它引发了另一个错误:Non static method cannot be referenced from a static content

请问关于我如何克服这个错误的任何指示?

最佳答案

更换

this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_viewdishes, R.id.label, adobe_products));


通过

ViewDishes.this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_viewdishes, R.id.label, adobe_products));


setListAdapterListFragment而不是Asynctask的方法,因此您需要使用ViewDishes.this代替this中的onPostExecute

07-24 16:05