Java 在显示TOAST时是否尝试调用虚拟方法?

Java 在显示TOAST时是否尝试调用虚拟方法?,java,android,android-fragments,android-asynctask,android-dialogfragment,Java,Android,Android Fragments,Android Asynctask,Android Dialogfragment,当您单击“我的活动”中的某个按钮时,它将启动/显示一个DatePickerDialog。当用户选择日期并单击“确定”时,我希望在原始类(单击按钮的活动)中运行AsyncTask。一切正常,但我希望在异步任务完成时向用户显示一个TOAST,但在执行此操作时,它会不断出错 这是我的密码: BuyerHomePage.java中的Button方法 public void MeetingCreator(){ CalenderImageButton = (ImageButt

当您单击“我的活动”中的某个按钮时,它将启动/显示一个
DatePickerDialog
。当用户选择日期并单击“确定”时,我希望在原始类(单击按钮的活动)中运行
AsyncTask
。一切正常,但我希望在异步任务完成时向用户显示一个TOAST,但在执行此操作时,它会不断出错

这是我的密码:

BuyerHomePage.java中的Button方法

    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代码

 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方法)

错误日志:

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)
04-23 02:25:31.631 22071-22071/com.wilsapp.wilsapp E/AndroidRuntime:致命异常:main
进程:com.wilsapp.wilsapp,PID:22071
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.res.Resources android.content.Context.getResources()”
位于android.content.ContextWrapper.getResources(ContextWrapper.java:87)
位于android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81)
在android.widget.Toast.(Toast.java:102)
位于android.widget.Toast.makeText(Toast.java:259)
在com.wilsapp.wilsapp.BuyerHomePage$MeetingSender.onPostExecute(BuyerHomePage.java:930)
在com.wilsapp.wilsapp.BuyerHomePage$MeetingSender.onPostExecute(BuyerHomePage.java:836)
位于android.os.AsyncTask.finish(AsyncTask.java:651)
位于android.os.AsyncTask.-wrap1(AsyncTask.java)
位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5417)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
如果有任何困惑或我需要解释什么,请评论!谢谢大家!

试试这个

Toast.makeText(getApplicationContext(), "Email sent!", Toast.LENGTH_LONG).show();

是BuyerHomePage片段还是活动?@MD它是一个活动
BuyerHomePage
显然是一个
活动
。您不能用
新建
实例化
活动
,因为它没有有效的
上下文
。当用户单击对话框中的“ok”时,如何启动“AsyncTask”@MikeM.您应该创建一个
接口
,该接口由
活动
实现,
对话框片段
使用该接口从
onDateSet()
方法回调到
活动
,并在
活动
接口
方法中启动
异步任务
。一个通用的例子.did不起作用:(嗯,很高兴看到开发人员回到家!BuyerHomePage.java是活动还是片段?它是一个活动!好的,这看起来你想在非活动活动中制作toast。你应该在DatePickerFragment.java中制作toast。。。
Toast.makeText(getApplicationContext(), "Email sent!", Toast.LENGTH_LONG).show();