-2

当您单击我的活动中的按钮时,它会启动/显示DatePickerDialog。当用户选择一个日期并点击“OK”时,我想在原始类中运行一个AsyncTask(按钮被点击的活动)。一切正常,但是我想在AsyncTask完成时向用户显示一个TOAST,但是当它这样做时它会一直出错。尝试在显示TOAST时调用虚拟方法?

继承人我的代码:在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代码

按钮方法

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(在后期的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(); 
     } 
    } 

错误日志:

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) 

如果有任何困惑或我需要解释任何事情请评论!谢谢!

+0

是BuyerHomePage的片段还是活动? –

+0

@MD这是一个活动 –

+2

“BuyerHomePage”显然是一个“活动”。你不能用'new'实例化一个'Activity',因为它没有一个有效的'Context'。 –

回答

0

试试这个。

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

没有工作:(和呃,很高兴看到开发人员回家! –

+0

是BuyerHomePage.java活动或片段? –

+0

这是一个活动! –

相关问题