大家好,我有一个带有片段的标签应用程序。第一个选项卡显示了一个 ListFragment,它使用 JSON/php 从网络服务器收集数据。
我的问题是,当智能手机中没有互联网时,应用程序会继续加载或尝试搜索数据。那么如何停止加载呢?当有互联网时,我如何重新开始加载?我猜是在 onPostExecute() 方法中,但我不知道如何获得“互联网状态”。
我正在使用异步任务
public class Tab1Fragment extends ListFragment {
private static String url="http://10.0.2.2/prueba/lista.php";
private static final String TAG="nombre";
private Context context;
ArrayList<HashMap<String,String>> jsonlist=new ArrayList<HashMap<String,String>>();
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,Bundle savedInstanceState) {
new GetJSONActivity(Tab1Fragment.this).execute();
return super.onCreateView(inflater, container, savedInstanceState);
}
private class GetJSONActivity extends AsyncTask<String, Void, String>{
private ProgressDialog progressDialog;
protected void onPreExecute(){
progressDialog=ProgressDialog.show(getActivity(), "",
"Loading. Please Wait..",true);
}
public GetJSONActivity(ListFragment activity){
context=activity.getActivity();
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
JSONParser jParser=new JSONParser();
JSONArray json=jParser.getJSONFromURL(url);
for(int i=0;i<json.length(); i++){
try{
JSONObject c=json.getJSONObject(i);
String vnombre=c.getString(TAG);
HashMap<String, String> map=new HashMap<String, String>();
map.put(TAG, vnombre);
jsonlist.add(map);
}catch(JSONException e){
e.printStackTrace();
return "Error creando variables";
}
}
return "Exito";
}
protected void onPostExecute(String success){
progressDialog.dismiss();
ListAdapter adapter=new SimpleAdapter(context,
jsonlist,
R.layout.item, new String[]{ TAG },
new int[]{R.id.nombreitem});
setListAdapter(adapter);
}
}
如果你们能指导我,我会很高兴:)enter code here