ببینید this متد نیست که. ما this.activity داریم ولی activity.this ندارم. this روی آبجکت اعمال نمیشه، روی کلاس اعمال میشه و منظورش آبجکت فعلی از اون کلاس.
در listener البته اگر this بنویسید منظور همون listener است نه کلاس بیرونی.
خب برای مدت Toast.makeText باید ببینیم چی میخواد:
اولین پارامتر Context است. باید آبجکتی از نوع Context براش پیدا کنیم.
خب خود کلاس Dialog متد getContext داره. پس به راحتی مثل کدی که در SendData هم نمونش بود:
Toast.makeText(getContext(), "Not found any application to send mail!", Toast.LENGTH_LONG);
getContext
در کلاس MainActivity کدی که نوشتی درسته. ولی در کلاس SendData هر چند نیازی به activity نیست چون Dialog خودش متد getContext داره. جایی گفتم از activity استفاده کن که Dialog خودش نداره، و البته میتونی از هر دو استفاده کنی ولی فکر کنم اگر از activity استفاده کنی در حالی که Dialog هم باشه پشت Dialog نمایش بده. این موضوع رو دقیق نمیدونم عملا تفاوتشون چیه و اینکه Context کدوم باشه مهمه یا نه (اینو باید بری در جاواداک Toast.makeText بخونی)
در کلاس SendData هر سه این موارد جواب میدن: (ببین تفاوتی دارن یا نه)
Toast.makeText(activity,"Error in Connection",Toast.LENGTH_SHORT).show();
Toast.makeText(activity.getApplicationContext(),"E rror in Connection",Toast.LENGTH_SHORT).show();
Toast.makeText(getContext(),"Error in Connection",Toast.LENGTH_SHORT).show();
اینکه activity مستقیما میتونی به جای Context استفاده کنی چون خودش از Context ارث برده.
راستی متد show() بعد از makeText فراموش نشه. کلاس SendData تصحیح کن، فراموش شده :|
موفق باشید.