2016-08-17 3 views
0

Ich habe eine Spinner-Klasse, in der drei Spinner-Element, in jedem Artikel Fall habe ich ein Zeitintervall für die Wiederholung Alarm.Problem ist jedes Mal, wenn ich Spinner-Klasse, die In-App geöffnet Service startet automatisch, aber ich möchte Service nur starten, wenn ich Spinner Element nicht jedes Mal ändern, wenn ich Spinner-Klasse öffne. Hier ist Java-Code für Spinner-Artikel.Alarmdienst startet automatisch, wenn ich Spinner öffnen Aktivität

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_setting, container, false); 
     textView = (TextView) rootView.findViewById(R.id.textView); 
     spinner = (Spinner) rootView.findViewById(R.id.spinner1); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       getActivity(), R.array.time_interval, android.R.layout.simple_spinner_item);  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, 
             View view, int pos, long id){ 
       // String item = parent.getItemAtPosition(pos).toString(); 
       // Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show(); 
       SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       Object test = parent.getSelectedItem(); 
       switch (pos){ 
        case 0: 
         break; 
       case 1: 
        editor.putInt("intervalInMinutes", 5*60*1000); 
       break; 
        case 2 : 
        editor.putInt("intervalInMinutes", 10*60*1000); 
         break; 
        case 3 : 
        editor.putInt("intervalInMinutes", 15*60*1000); 
         break; 
       } 
       editor.apply(); 
       GpsTrackerAlarmReceiver alarm = new GpsTrackerAlarmReceiver(); 
       alarm.setAlarm(getActivity()); 
       } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 
      } 
     }); 
     // Inflate the layout for this fragment 
     return rootView; 
    } 
    @Override 
    public void onPause() { 
     super.onPause(); 
     SharedPreferences prefs = getActivity().getSharedPreferences("prefs_name", Context.MODE_PRIVATE); 
     prefs.edit().putInt("spinner_indx", spinner.getSelectedItemPosition()).apply(); 
    } 
    @Override 
    public void onResume() { 
     super.onResume(); 
     SharedPreferences prefs = getActivity().getSharedPreferences("prefs_name", Context.MODE_PRIVATE); 
     int spinnerIndx = prefs.getInt("spinner_indx", 0); 
     spinner.setSelection(spinnerIndx); 
    } 
    @Override 
    public void onAttach(Activity activity) { 
     //noinspection deprecation 
     super.onAttach(activity); 
    } 
    @Override 
    public void onDetach() { 
     super.onDetach(); 
    } 
} 

Antwort

-1

einen bool Flag erstellen, weil Sie wird Spinner Hörer automatisch erstes Mal aufgerufen, während Schöpfung und damit wird Ihr Code Alarm ausgeführt werden, so müssen Sie einen Scheck setzen den Alarmcode zur Auswahl nur auszuführen.

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
int previousitm =sharedPreferences.getInt("previousItemselected",0); 


boolean flag =false; 
     switch (pos){ 
      case 0: 
       break; 
     case 1: 
      if(previousitm!=1) 
       flag=true; 
      editor.putInt("intervalInMinutes", 5*60*1000); 
      editor.putInt("previousItemselected",1); 
     break; 
      case 2 : 
      if(previousitm!=2) 
       flag=true; 
      editor.putInt("intervalInMinutes", 10*60*1000); 
      editor.putInt("previousItemselected",2); 
       break; 
      case 3 : 
      if(previousitm!=3) 
       flag=true; 
      editor.putInt("intervalInMinutes", 15*60*1000); 
      editor.putInt("previousItemselected",3); 
       break; 
     } 
     editor.apply(); 
     if(flag){ 
      GpsTrackerAlarmReceiver alarm = new GpsTrackerAlarmReceiver(); 
      alarm.setAlarm(getActivity()); 
     } 
     } 
+0

versuchen, Code aktualisiert –

+0

dank geteilt nach prefrences seine –

+0

mir eine Freude zu arbeiten und glücklich Codierung –

Verwandte Themen