我正在尝试做一个里面有listview的片段,我正在尝试使用JSON填充listview。我只有一个错误,我不知道在哪里把我的单一错误。该错误表示无法访问的语句,当我把getJSON()放在}下面时,它表示无效的方法声明
这是我在片段中使用listview的代码。有错误指向getJSON();在根视图下面。感谢
public class News extends Fragment {
private ListView lv;
private String JSON_STRING;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(news, container, false);
lv = (ListView) rootView.findViewById(R.id.listView3);
return rootView;
getJSON();
}
private void showResult(){
JSONObject jsonObject = null;
ArrayList<HashMap<String,String>> list = new ArrayList<>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY1);
for(int i = 0; i<result.length(); i++){
JSONObject jo = result.getJSONObject(i);
String NID = jo.getString(Config.TAG_NID);
String title = jo.getString(Config.TAG_title);
String content = jo.getString(Config.TAG_content);
String n_date = jo.getString(Config.TAG_n_date);
HashMap<String,String> match = new HashMap<>();
match.put(Config.TAG_NID, NID);
match.put(Config.TAG_title,title);
match.put(Config.TAG_content,content);
match.put(Config.TAG_n_date,n_date);
list.add(match);
}
} catch (JSONException e) {
e.printStackTrace();
}
ListAdapter adapter = new SimpleAdapter(
getActivity(), list, R.layout.newsadapterlayout,
new String[]{Config.TAG_title,Config.TAG_content, Config.TAG_n_date, Config.TAG_NID},
new int[]{ R.id.title, R.id.content, R.id.n_date});
lv.setAdapter(adapter);
}
private void getJSON(){
class GetJSON extends AsyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
JSON_STRING = s;
showResult();
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequest(Config.URL_NEWS);
return s;
}
}
GetJSON gj = new GetJSON();
gj.execute();
}
}
答案 0 :(得分:2)
您的getJSON()
来电是在return
声明之后,因此无法执行此操作。这就是“无法访问的语句”错误的含义。
您可以在getJSON()
声明之前将return
来电转移到该行,它应解决该问题。如果没有运行它,很难知道是否会出现其他问题,但至少应该解决这个问题。
答案 1 :(得分:1)
Protip:将您不了解的错误放入您最喜欢的搜索引擎中。在这种情况下,搜索java unreachable statement
会产生大量结果,说明您的问题是您在return
之后发表了声明:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(news, container, false);
lv = (ListView) rootView.findViewById(R.id.listView3);
return rootView; // <- Returning from the function here
getJSON(); // <- How is this supposed to get executed if you already returned?
}
在从方法返回之前调用getJSON
。