-1

here I have a calendar in a fragment and I would like, when clicking on a date, that we are sent on a new activity with the date (on which we clicked). So how can i send the date in a new activity when I click on a calendar date ? For now, i have this

import android.icu.util.Calendar;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.CalendarView;
import android.widget.TextView;
import android.widget.Toast;

import butterknife.Bind;
import butterknife.ButterKnife;

public class Tab2Calendrier extends Fragment {
    @Bind(R.id.calendar)
    CalendarView calendar;

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab2calendrier, container, false);
    ButterKnife.bind(this, rootView);

    calendar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
        @Override
        public void onGlobalLayout()
        {

        }
    });

    return rootView;
}

}

Thanks

Justin
  • 21,374
  • 12
  • 83
  • 129
JoeJoe
  • 1
  • 1

2 Answers2

0

You should use setOnDateChangeListener(). So the code can be something like this:

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab2calendrier, container, false);
    ButterKnife.bind(this, rootView);

    calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

        @Override
        onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
            Intent intent = new Intent(getActivity(), MyActivity.class);
            // Save the selected date in for using in the new activity
            intent.putExtra("year", year);
            intent.putExtra("month", month);
            intent.putExtra("dayOfMonth", dayOfMonth);

            startActivity(intent);
        }

    });
    return rootView;
}

And your MyActivity class should be something like this:

class MyActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {

         Intent intent = getIntent();

         if (intent != null) {
             // You can check for null to make sure
             int year = intent.getIntExtra("year", 2017);
             int month = intent.getIntExtra("month", 1);
             int dayOfMonth = intent.getIntExtra("dayOfMonth", 1);

             // Use these to put them inside a TextView...
         }
    }
}
Doron Yakovlev-Golani
  • 4,440
  • 9
  • 32
  • 51
0

Look here https://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html

calendar.setOnDateChangeListener(new OnDateChangeListener() {
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
     Date d = new GregorianCalendar(year, month, dayOfMonth).getTime();
     Intent intent = new Intent(activity, Activity.class);
     intent.putExtra("DATE", d.getTime());
     fragment.getContext().startActivity(intent);
}
});

In this case we pass millis to the activity. In the activity you can extract date

Date d = new Date(getIntent().getLongExtra("DATE"));
Maxim Tulupov
  • 1,545
  • 12
  • 7