2015-06-08 2 views
0

Этот код работает, но выполняется несколько раз, когда я перехожу к другому фрагменту.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(); 
      } 
     } 
} 
+0

затем положить ваши коды в onActivityCreated – Elltz

+0

я пытался, но имел такое же поведение. – Exprove

+0

какое поведение? у вас есть только oncreateView в вашем фрагменте, который является причиной того, что это только называется, объясните мне хорошо. Сэр – Elltz

ответ

1

Когда вы уезжаете, что Fragment, удалите ее в следующий раз, когда вы пришли к нему OnCreate будут востребованы с использованием FragmentMananger и Transaction

Смежные вопросы