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();