如何在 ToggleButton Android 中使用 SharedPreference?

How to using SharedPreference in ToggleButton Android?

我使用 3 个切换按钮将闹钟设置为早上 6 点、中午 12 点和下午 6 点,但闹钟仅在下午 6 点或第三次最后一次 :( 仅在方法 public void startEnamSore() {

上发出警报

代码:

public class AlarmFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private PendingIntent pendingIntent;
private TextView textViewEnamPagi, textViewDuabelas, textViewenamSore, textResult;
private ToggleButton toggleButtonEnamPagi, toggleButtonDuaBelas, toggleButtonEnamSore;

public AlarmFragment() {
    // Required empty public constructor
}

/**
 * Use this factory method to create a new instance of
 * this fragment using the provided parameters.
 *
 * @param param1 Parameter 1.
 * @param param2 Parameter 2.
 * @return A new instance of fragment AlarmFragment.
 */
// TODO: Rename and change types and number of parameters
public static AlarmFragment newInstance(String param1, String param2) {
    AlarmFragment fragment = new AlarmFragment();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);



    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_alarm, container, false);
    toggleButtonEnamPagi = (ToggleButton) v.findViewById(R.id.toggleButton);
    //textViewDuabelas = (ToggleButton) getActivity().findViewById(R.id.toggleButton2);
    textViewEnamPagi = (TextView)   v.findViewById(R.id.textViewalarm);
    textViewDuabelas = (TextView) v.findViewById(R.id.textView);
    toggleButtonDuaBelas = (ToggleButton) v.findViewById(R.id.toggleButton2);
    textResult = (TextView) v.findViewById(R.id.textViewhasil);
    toggleButtonEnamSore = (ToggleButton) v.findViewById(R.id.toggleEnamSore);

    textViewEnamPagi.setText("OFF Pukul 06.00 AM");
    textViewDuabelas.setText("OFF Pukul 12.00 PM");

    startSix();
    startDuaBelas();
    startEnamSore();

    toggleButtonEnamPagi.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonEnamPagi.isChecked()){
                textViewEnamPagi.setText("ON Pukul 06.00 AM");
                SharedPreferences preferences = getActivity().getPreferences(1);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnam", true);
                edt.commit();
            }else {
                textViewEnamPagi.setText("OFF Pukul 06.00 AM");
                SharedPreferences preferences = getActivity().getPreferences(1);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnam", false);
                edt.commit();
            }
        }
    });

    toggleButtonDuaBelas.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonDuaBelas.isChecked()){
                textViewDuabelas.setText("ON Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgDuabelas", true);
                edt.commit();
            }else{
                textViewDuabelas.setText("OFF Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgDuabelas", false);
                edt.commit();
            }
        }
    });

    toggleButtonEnamSore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonEnamSore.isChecked()){
                //textViewDuabelas.setText("ON Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnamsore", true);
                edt.commit();
            }else{
                //textViewDuabelas.setText("OFF Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnamsore", false);
                edt.commit();
            }
        }
    });



    // Inflate the layout for this fragment
return v;
}



public void startSix(){
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgenam = preferences.getBoolean("tgEnam", true);
    if(tgenam == true){
        textViewEnamPagi.setText("ON Pukul 06.00 AM");
        toggleButtonEnamPagi.setChecked(true);
        Calendar calendar = Calendar.getInstance();          
            calendar.set(Calendar.HOUR_OF_DAY, 6);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);


            Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
            pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 0, myIntent, 0);

            AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
       // }
    }else{

    }

}
public  void startDuaBelas() {
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgduabelas = preferences.getBoolean("tgDuabelas", true);
    if (tgduabelas == true) {
        textViewDuabelas.setText("ON Pukul 12.00 PM");
        toggleButtonDuaBelas.setChecked(true);

        Calendar calendar = Calendar.getInstance();           
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);


        Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 0, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        // }
    } else {
        textViewDuabelas.setText("OFF Pukul 12.00 PM");

    }
}


public  void startEnamSore() {
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgenamsore = preferences.getBoolean("tgEnamsore", true);
    if (tgenamsore == true) {
        toggleButtonEnamSore.setChecked(true);

        Calendar calendar = Calendar.getInstance();         
        calendar.set(Calendar.HOUR_OF_DAY, 18);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 0, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        // }
    } else {


    }

}

谢谢

如果您希望所有警报都应在其特定时间发出警报,那么您需要更改待定缩进的 ID ...这些应该不同,以便警报管理器可以区分它们。

pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), unique_id, myIntent, 0);

而是……

pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 0, myIntent, 0);