-2

when you click a button in my activity it starts/displays a DatePickerDialog. When the user selects a date and clicks "ok" i want to run an AsyncTask in the original class (the activity where the button was clicked). Everything works but i want to display to the user a TOAST when the AsyncTask is finished but it keep on getting an error when doing so.

Heres my code:

Button method in the BuyerHomePage.java

    public void MeetingCreator(){
        CalenderImageButton =     (ImageButton)findViewById(R.id.CalenderImageButton);
    CalenderImageButton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                                DialogFragment picker = new DatePickerFragment();
                                picker.show(getFragmentManager(), "datePicker");
           }
        }
    );
}

DatePickerFragment.java code

 public class DatePickerFragment extends DialogFragment
    implements DatePickerDialog.OnDateSetListener {

public static String formattedDate;

@Override
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
    return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
    Calendar c = Calendar.getInstance();
    c.set(year, month, day);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    formattedDate = sdf.format(c.getTime());

    BuyerHomePage Meeting = new BuyerHomePage();
    Meeting.new MeetingSender().execute();
}
}

BuyerHomePage.java (post method in the AsyncTask)

@Override
    protected void onPostExecute (String result){

        if (result.equals("email sent")) {
            //This is where i get the error
            Toast.makeText(BuyerHomePage.this, "Email sent!", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(BuyerHomePage.this, "Can't send email", Toast.LENGTH_LONG).show();
        }
    }

Error Logs:

04-23 02:25:31.631 22071-22071/com.wilsapp.wilsapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.wilsapp.wilsapp, PID: 22071
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
    at android.content.ContextWrapper.getResources(ContextWrapper.java:87)
    at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81)
    at android.widget.Toast.<init>(Toast.java:102)
    at android.widget.Toast.makeText(Toast.java:259)
    at com.wilsapp.wilsapp.BuyerHomePage$MeetingSender.onPostExecute(BuyerHomePage.java:930)
    at com.wilsapp.wilsapp.BuyerHomePage$MeetingSender.onPostExecute(BuyerHomePage.java:836)
    at android.os.AsyncTask.finish(AsyncTask.java:651)
    at android.os.AsyncTask.-wrap1(AsyncTask.java)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

if there's any confusion or i need to explain anything please comment! Thank you!

Lazar Kukolj
  • 696
  • 3
  • 15
  • 43
  • is BuyerHomePage fragment or activity? – M D Apr 23 '16 at 07:02
  • @MD it is an activity – Lazar Kukolj Apr 23 '16 at 07:03
  • 2
    `BuyerHomePage` is apparently an `Activity`. You cannot instantiate an `Activity` with `new`, as it won't have a valid `Context`. – Mike M. Apr 23 '16 at 07:04
  • How can i start the 'AsyncTask' when the user clicks "ok" from the dialog then? @MikeM. – Lazar Kukolj Apr 23 '16 at 07:08
  • You should create an `interface` that your `Activity` implements, that your `DialogFragment` uses to callback to the `Activity` from the `onDateSet()` method, and start your `AsyncTask` in the `Activity`'s `interface` method. [Here's](http://stackoverflow.com/questions/13338113/managing-activity-from-dialogfragment) a general example. – Mike M. Apr 23 '16 at 07:17

1 Answers1

0

Try this.

Toast.makeText(getApplicationContext(), "Email sent!", Toast.LENGTH_LONG).show();
Jay Rathod
  • 11,131
  • 6
  • 34
  • 58
Milos Lulic
  • 627
  • 5
  • 22