nel*_*tto 11 android android-fragments
我有这个类用于发送带有android的电子邮件
public class SendMailTask extends AsyncTask {
private ProgressDialog statusDialog;
private Activity sendMailActivity;
public SendMailTask(Activity activity) {
sendMailActivity = activity;
}
protected void onPreExecute() {
statusDialog = new ProgressDialog(sendMailActivity);
statusDialog.setMessage("Getting ready...");
statusDialog.setIndeterminate(false);
statusDialog.setCancelable(false);
statusDialog.show();
}
@Override
protected Object doInBackground(Object... args) {
try {
Log.i("SendMailTask", "About to instantiate GMail...");
publishProgress("Processing input....");
GMail androidEmail = new GMail(args[0].toString(),
args[1].toString(), (List) args[2], args[3].toString(),
args[4].toString());
publishProgress("Preparing mail message....");
androidEmail.createEmailMessage();
publishProgress("Invio email in corso, sarai ricontattato da un nostro operatore per la conferma");
androidEmail.sendEmail();
publishProgress("Email Sent.");
Log.i("SendMailTask", "Mail Sent.");
} catch (Exception e) {
publishProgress(e.getMessage());
Log.e("SendMailTask", e.getMessage(), e);
}
return null;
}
@Override
public void onProgressUpdate(Object... values) {
statusDialog.setMessage(values[0].toString());
}
@Override
public void onPostExecute(Object result) {
statusDialog.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
在不使用片段的情况下,我使用MainActivity中的以下代码发送邮件
new SendMailTask(MainActivity.this).execute(fromEmail,
fromPassword, toEmailList, emailSubject, emailBody);
Run Code Online (Sandbox Code Playgroud)
但现在我需要使用Fragment,我在这一点上得到一个错误:"MainActivity.this它不是一个封闭的类"
我该如何解决这个错误?
PS:抱歉我的英文不好:D
小智 15
更改以下代码
new SendMailTask(MainActivity.this).execute(fromEmail,
fromPassword, toEmailList, emailSubject, emailBody);
Run Code Online (Sandbox Code Playgroud)
至
new SendMailTask(getActivity()).execute(fromEmail,
fromPassword, toEmailList, emailSubject, emailBody);
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看以下链接.
BOU*_*lid 14
从片段到活动使用此:
((YourActivityName)getActivity()).yourPublicMethod();
Run Code Online (Sandbox Code Playgroud)
从活动到片段使用此:
FragmentManager fragmentManager = getSupportFragmentManager();
//include fragment via layout xml
YourFragmentClass fragment = (YourFragmentClass)fragmentManager.findFragmentById(R.id.your_fragment_id);
fragment.yourPublicMethod();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31097 次 |
| 最近记录: |