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.