2

I unfortunately encountered a nullpoint exception error occurred while trying to load my application, and below is the log cat message. It essentially occurs when the user clicks on the btnCalendar or iCalendar.

10-06 20:08:05.155: E/AndroidRuntime(1501): FATAL EXCEPTION: main
10-06 20:08:05.155: E/AndroidRuntime(1501): java.lang.NullPointerException
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.CalendarView.onScroll(CalendarView.java:1214)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.CalendarView.access$900(CalendarView.java:76)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.CalendarView$2.onScroll(CalendarView.java:1075)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.ListView.layoutChildren(ListView.java:1762)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.AbsListView.onLayout(AbsListView.java:2012)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1436)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.View.layout(View.java:14289)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewGroup.layout(ViewGroup.java:4562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.Choreographer.doFrame(Choreographer.java:532)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.os.Handler.handleCallback(Handler.java:730)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.os.Looper.loop(Looper.java:137)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at java.lang.reflect.Method.invokeNative(Native Method)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at java.lang.reflect.Method.invoke(Method.java:525)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-06 20:08:05.155: E/AndroidRuntime(1501):     at dalvik.system.NativeStart.main(Native Method)

Below is the activity code:

public class ScheduleMatchOptionActivity extends Activity implements 
OnItemSelectedListener {

// Widget GUI
protected TextView mCalendarDate;
protected TextView mCalendarTime;
Button btnCalendar, btnTimePicker;
TextView txtDate, txtTime;
ImageView iTime, iCalendar;


// Variable for storing current date and time
private int mYear, mMonth, mDay, mHour, mMinute;

private Spinner spinner;
private FeedbackDialog feedBack;
private static final String[]paths = {"Time", "Morning", "Afternoon", "Evening"};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
feedBack = new FeedbackDialog(this, "AF-46D8F2A319EA-0A");
setContentView(R.layout.match_schedule);
txtDate = (TextView) findViewById(R.id.txtDate);
txtTime = (TextView) findViewById(R.id.txtTime1);

iTime = (ImageView) findViewById(R.id.iTime);


txtTime.setVisibility(View.INVISIBLE);
iTime.setVisibility(View.INVISIBLE);







Button mConfirm2 = (Button)findViewById(R.id.btnConfirmSchedule);
        mConfirm2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                  if(txtDate.getText().toString().length()>0 && txtTime.getText().toString().length() >0 ){
                      ParseUser currentUser = ParseUser.getCurrentUser();

             // Create the class and the columns
                currentUser.saveInBackground();

                currentUser.put("ActivityDate", txtDate.getText().toString()); 
                currentUser.put("ActivityTime", txtTime.getText().toString());
                currentUser.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        setProgressBarIndeterminateVisibility(false);

                        if (e == null) {
                            // Success!
                              ParseQuery<ParseInstallation> pushQuery = ParseInstallation.getQuery();
                              Button btnSConfirm = (Button)findViewById(R.id.btnConfirmSchedule);

                              btnSConfirm.setText("Confirmation sent");

                              ParsePush push = new ParsePush();
                              push.setQuery(pushQuery);
                              push.setChannel("EventsConfirmation1");
                              pushQuery.whereNotEqualTo("users", ParseUser.getCurrentUser().getObjectId());


                              push.setMessage("New event confirmation request recieved");
                              push.sendInBackground();
                        }
                        else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(ScheduleMatchOptionActivity.this);
                            builder.setMessage(e.getMessage())
                                .setTitle(R.string.signup_error_title)
                                .setPositiveButton(android.R.string.ok, null);
                            AlertDialog dialog = builder.create();
                            dialog.show();
                        }
                 }
             });
                  }else{
                       Toast t = Toast.makeText(ScheduleMatchOptionActivity.this,"Please select your Date and Time",Toast.LENGTH_SHORT);
                        t.setGravity(Gravity.CENTER,0,0);
                        t.show();


                }};
            });


btnCalendar = (Button) findViewById(R.id.btnCalendar);
btnCalendar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {

        DialogP ciao = new  DialogP();
        ciao.show(ScheduleMatchOptionActivity.this.getFragmentManager(),"MyDP");
    }
});

iCalendar = (ImageView) findViewById(R.id.iCalendar);
iCalendar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {

        DialogP ciao = new  DialogP();
        ciao.show(ScheduleMatchOptionActivity.this.getFragmentManager(),"MyDP");
    }
});




spinner = (Spinner)findViewById(R.id.spinTime);
txtTime.setVisibility(View.VISIBLE);
iTime.setVisibility(View.VISIBLE);

ArrayAdapter<String>adapter = new ArrayAdapter<String>(ScheduleMatchOptionActivity.this,
        R.layout.spinner_item,paths);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);

iTime.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {

        DialogP ciao = new  DialogP();
        ciao.show(ScheduleMatchOptionActivity.this.getFragmentManager(),"MyDP");
    }
});



}

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {

switch (position) {

    case 0:
    txtTime.setHint("Select your time");
    break;

    case 1:
        txtTime.setText("Morning");
        break;
    case 2:
        txtTime.setText("Afternoon");

        break;
    case 3:
        txtTime.setText("Evening");

        break;

}


}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    txtTime.setText("Select your time");

}

Update DialogP CLass

public class DialogP extends DialogFragment implements OnDateSetListener {
    TextView txtDate;

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH); 


        //  Create a new instance of DatePickerDialog and return it
        DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month,day);
        Log.i("onCreateDialog", "onCreateDialog : MinDate() : "+new Date().getTime());

        Calendar cal=new GregorianCalendar();

        //min date
        dialog.getDatePicker().setMinDate(cal.getTime().getTime()-1000);
        Log.i("onCreateDialog", "onCreateDialog : MinDate() : "+cal.getTime());

        //max date .... added 30 days from currunt date
        cal.add(Calendar.DATE, 12);
        Date dte =cal.getTime();
        dialog.getDatePicker().setMaxDate(dte.getTime());
        Log.i("onCreateDialog", "onCreateDialog : MaxDate() : "+dte);

        //customizing calendar view
        dialog.getDatePicker().setCalendarViewShown(true);
        dialog.getDatePicker().setSpinnersShown(false);
        dialog.getDatePicker().getCalendarView().setShowWeekNumber(false);
        dialog.setCancelable(true);

        Log.i("Date", "date : "+System.currentTimeMillis());
        return dialog;
    }

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        txtDate = (TextView) getActivity().findViewById(R.id.txtDate);
         txtDate.setText(dayOfMonth + "-"
                 + (monthOfYear + 1) + "-" + year);
    }
}

Any help would be greatly appreciated.

code_legend
  • 3,547
  • 15
  • 51
  • 95
  • 1
    It would seem the error is in the `DialogP` class. Please post that. – Mike M. Oct 06 '14 at 22:48
  • 2
    I'm unable to reproduce that error, but I've found a couple sources that indicate that it might be caused by setting the min and max dates on the DatePicker. You might try changing those values. – Mike M. Oct 06 '14 at 23:28
  • 2
    You are indeed correct. It does have to do with the max date. For some reason, if its below 14 or 15, I get an error, when i would like to limit to 7 days – code_legend Oct 06 '14 at 23:46
  • @John did you ever figure out a solution for the date issues, where the min/max is more than 15 days? – Johnny Aug 14 '18 at 23:20
  • For those having this issue, try `datePickup.setCalendarViewShown(false);` @Johnny source: https://stackoverflow.com/a/18700331/3579786 – Jiyeh Jan 15 '19 at 09:22

0 Answers0