2016-08-17 6 views
0

私は3つのスピナー項目を持つスピナークラスを持っています。アラームを繰り返すための時間間隔を設定した各項目のケースです。問題はスピナークラスを開くたびに、自動的にサービスが開始されますが、スピナークラスを開くたびに、スピナー項目を変更した場合にのみサービスを開始します。 ここはスピナー項目のJavaコードです。私はスピナーを開くと自動的にアラームサービスが開始されます。アクティビティ

@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(); 
    } 
} 

答えて

-1

作成、したがって、あなたのアラームコードしながら、あなたのスピナーリスナーが自動的に最初に呼び出されますので、ブールフラグを作成するには、唯一の選択にアラームコードを実行するためにチェックを入れる必要があるので、実行されます。

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

は、共有 –

+0

感謝した後、更新されたコードは、その作業 –

+0

私の喜びと幸せコーディングをprefrencesしてみてください –

関連する問題