Этот код работает, но выполняется несколько раз, когда я перехожу к другому фрагменту.onCreateView() вызывается несколько раз - Change to onCreate()
Например это первый фрагмент, если я иду на третий (или, например, вперед «разница более чем один фрагмент») и вернуться к первому снова, он будет выполнять onCreateView () еще раз.
Я знаю, что это нормально, и я предполагаю, что хочу изменить его на метод onCreate(), но в моем случае, я думаю, я получу нулевые значения, потому что еще нет пользовательского интерфейса (например, получить spinner) ,
Идея состоит в том, чтобы заполнить счетчик с помощью php webservice.
Любая идея для решения этой проблемы? Спасибо за помощь.
public class ProfessoresFragment extends Fragment {
private Spinner spinnerProfessores;
// array list for spinner adapter
private ArrayList<Teacher> TeacherList;
ProgressDialog pDialog;
// API urls
// Url to get all teachers
private String URL_TEACHERS = "http://10.0.2.2/android/GetAllTeachersJson.php";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_professores, container, false);
spinnerProfessores = (Spinner) rootView.findViewById(R.id.spinner);
TeacherList = new ArrayList<Teacher>();
new GetTeachers().execute();
return rootView;
}
/**
* Adding spinner data
* */
private void populateSpinner() {
List<String> lables = new ArrayList<String>();
for (int i = 0; i < TeacherList.size(); i++) {
lables.add(TeacherList.get(i).getProfessor());
}
// Creating adapter for spinner
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, lables);
// Drop down layout style - list view with radio button
spinnerAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinnerProfessores.setAdapter(spinnerAdapter);
}
private class GetTeachers extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("A processar professores..");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler jsonParser = new ServiceHandler();
String json = jsonParser.makeServiceCall(URL_TEACHERS, ServiceHandler.GET);
Log.e("Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
if (jsonObj != null) {
JSONArray teachers = jsonObj
.getJSONArray("professores");
for (int i = 0; i < teachers.length(); i++) {
JSONObject TeaObj = (JSONObject) teachers.get(i);
Teacher Tea = new Teacher(TeaObj.getInt("Cod_Professor"),
TeaObj.getString("Professor"));
TeacherList.add(Tea);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
populateSpinner();
}
}
}
затем положить ваши коды в onActivityCreated – Elltz
я пытался, но имел такое же поведение. – Exprove
какое поведение? у вас есть только oncreateView в вашем фрагменте, который является причиной того, что это только называется, объясните мне хорошо. Сэр – Elltz