Search code examples
androidalarmtimepicker

Problems with sending data between Activities android studio


I try to write kind off alarm application and I have problems with sending data between activities. In main activity I open next activity where I set the alarm. After alarm is set, I want send back to main activity string with information at what time alarm is going to start. Here is my code:

Opening Activity:

  public void addActivity(View view) {
                intent = new Intent(this, Time_Picker.class);
                startActivityForResult(intent, REQUEST_GET_TIME);
                }

** Setting the alarm (I send variable intent_string, intent go to AlarmReciver class)**

alarm_on.setOnClickListener(new View.OnClickListener(){
            @TargetApi(Build.VERSION_CODES.M)
            @Override
            public void onClick(View v){

                ind = true;

                calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
                calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());

                int hour = timePicker.getCurrentHour();
                int minute = timePicker.getCurrentMinute();

                String hourString = String.valueOf(hour);
                String minuteString = String.valueOf(minute);

                if(minute<10){
                    minuteString="0"+String.valueOf(minute);
                }

                intent.putExtra("extra", "on");

                temp = select_item +" - " +hourString+":"+minuteString;

                intent_string = getIntent();

                intent_string.putExtra("temp", temp);
                setResult(RESULT_OK, intent_string);





                pendingIntent = PendingIntent.getBroadcast(Time_Picker.this,
                        0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                        pendingIntent);



                finish();

    }
});

Receiving string:

 @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Log.e("dziala:", "");

        if (requestCode == 1){
            if(resultCode == RESULT_OK){

                String text = data.getStringExtra("temp");


                Log.e("dziala:", text);
            }
        }
    }

After running this Alarm is working but i seems like application never is in onActivityResult function (should get information from logs and i get nothing).


Solution

  • Here's a full example :

    Here's a code to open the timer, And set the alarm based on the time selected :

     TimePickerDialog basic_timer_timePickerDialog;
    
    
    private void Timer(boolean is24r){
        Calendar calendar = Calendar.getInstance();
        Log.d(TAG, "EnableTimer Called");
        basic_timer_timePickerDialog2 = new TimePickerDialog(
                getActivity(),
                onTimeSetListener2,
                calendar.get(Calendar.HOUR_OF_DAY),
                calendar.get(Calendar.MINUTE),
                is24r);
        basic_timer_timePickerDialog2.setTitle(getResources().getString(R.string.enable_alarm));
        basic_timer_timePickerDialog2.show();
    
    }
    
    
    
    TimePickerDialog.OnTimeSetListener onTimeSetListener2
        = new TimePickerDialog.OnTimeSetListener(){
    
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    
        Calendar calNow = Calendar.getInstance();
        Calendar calSet = (Calendar) calNow.clone();
    
        calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
        calSet.set(Calendar.MINUTE, minute);
        calSet.set(Calendar.SECOND, 0);
        calSet.set(Calendar.MILLISECOND, 0);
    
        if(calSet.compareTo(calNow) <= 0){
            //Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
        }
    
        Timer alarm = new Timer();
        alarm.setAlarm(calSet,getActivity());
    }};
    

    Timer Class :

        public void setAlarm(Calendar targetCal, Context context){
    
        String AlarmSetToText = context.getResources().getString(R.string.AlarmSetToText);
    
        String TimeSetTo = AlarmSetToText + " " + targetCal.getTime();
    
        Toast.makeText(context, TimeSetTo, Toast.LENGTH_LONG).show();
    
        Intent intent = new Intent(context, TimerEnable.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_INT, intent, 0);
        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
    
    }