Search code examples
androidandroid-fragmentsbroadcastreceiveralarmmanagerandroid-toast

Show toast in fragment with AlarmManager


ok, i want to show a toast in my fragment using AlarmManager, but i dont know why my toast does not show, here is my code:

My Activity:

public class ScheduleMainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    

        Configuration config = getResources().getConfiguration();

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction =   fragmentManager.beginTransaction();
        ScheduleMainFragment fragment = new ScheduleMainFragment();

        if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {    
            fragmentTransaction.replace(android.R.id.content, fragment);
        }else{       
            fragmentTransaction.replace(android.R.id.content, fragment);
        }
        fragmentTransaction.commit();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_login, menu);
        return true;
    }
}

Here is my fragment:

public class ScheduleMainFragment extends Fragment {

    View _fragment;
    private PendingIntent pendingIntent;
    private AlarmManager manager;

    CircularProgressButton mScheduleDate;
    CircularProgressButton mMyScheduleDates;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


        _fragment = inflater.inflate(R.layout.schedulemain_p, container, false);
        SetupView(_fragment);


        return _fragment;
    }

    private void SetupView(View fragment) {
        Intent alarmIntent = new Intent(getActivity().getApplicationContext(),AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0);

        mScheduleDate = (CircularProgressButton) _fragment.findViewById(R.id.btScheduleDate);
        mMyScheduleDates = (CircularProgressButton) _fragment.findViewById(R.id.btMyScheduleDates);

        mScheduleDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SetAlert((Button) view);
            }
        });
        mMyScheduleDates.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                StopAlert((Button) view);
            }
        });
    }


    private void SetAlert(Button view) {
        startAlarm();
    }

    private void StopAlert(Button view) {
    }


    public void startAlarm() {
        manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        int interval = 10000;

        manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
        Toast.makeText(getActivity(), "Alarm Set", Toast.LENGTH_SHORT).show();
    }

My AlarmReceiver

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "Alarma activada", Toast.LENGTH_SHORT);//When i debug this toast does not show in my fragment, i dont know what to do here.
    }
}

here my AlarmReceiver receive my alarm, but does not show toast in my fragment, can anyone help me, i'm just new in android.


Solution

  • You didn't call the show() method.

    It should be:

    Toast.makeText(context, "Alarma activada", Toast.LENGTH_SHORT).show();