[英]MainActivity is not an enclosing class in Fragment Class
我已經打開了兩個Android Studio項目。 一個是實際的應用程序,另一個是測試項目。 在測試項目中,我在MainActivity.java中使用了此代碼,並且效果很好。 現在,當我嘗試將其轉移到我的實際應用程序項目中時,它不起作用。 可能是因為代碼位於片段類而不是MainActivity中。
這是我正在談論的代碼:
private class SendMailTask extends AsyncTask<Message, Void, Void> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Sending mail", true, false);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
}
@Override
protected Void doInBackground(Message... messages) {
try {
Transport.send(messages[0]);
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
它只是在屏幕上顯示“正在發送電子郵件”消息。 我不確定是否需要復制整個課程,所以請告訴我是否是這樣。
錯誤顯示在此行:
progressDialog = ProgressDialog.show(MainActivity.this, "Please wait", "Sending mail", true, false);
它說:“ com.example.private.privateprivate.MainActivity”不是封閉類”。
我不確定該怎么辦,因為如果我放入MainFragment.this,它會給出一個錯誤並說:'錯誤的第一個參數類型。 找到:“ com.example.private.privateprivate.MainFragment”,必需:“ android.content.Context”
使用getActivity()
作為第一個參數。
您需要一個Context
對象才能調用show()
。 當您的AsyncTask駐留在活動中時,獲取活動的方法是直接使用MainActivity.this
引用合並活動。 現在您的任務位於一個Fragment中,您將無法執行此操作。 但是片段具有一個getActivity()
方法,該方法將返回其活動,因此您可以改用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.