Java 我正在将上下文传递给构造函数,但服务仍然需要根据ide指定的类名

Java 我正在将上下文传递给构造函数,但服务仍然需要根据ide指定的类名,java,android,class,android-context,Java,Android,Class,Android Context,我创建了一个类,并在构造函数中给它上下文 public class DownloadHandler { private Context mContext; private String filename; private String remotePath; public static final int DIALOG_DOWNLOAD_PROGRESS = 0; private ProgressDialog m

我创建了一个类,并在构造函数中给它上下文

public class DownloadHandler {

        private Context mContext;
        private String filename;
        private String remotePath;

        public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
        private ProgressDialog mProgressDialog;

//Constructor====================================================================

        public DownloadHandler(String rp, String f, Context c) throws Exception {
            mContext = c;
            remotePath = rp;
            filename = f;
        }
...
IDE抱怨progressDialog需要一个类

protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DIALOG_DOWNLOAD_PROGRESS:
            //==============HERE================================
            mProgressDialog = new ProgressDialog(mContext.this);
            //==================================================
            mProgressDialog.setMessage("Downloading file..");
            mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            mProgressDialog.setCancelable(false);
            mProgressDialog.show();
            return mProgressDialog;
        default:
            return null;
    }
}
我以为我做得对….

@Hacketo写道:

为什么
mContext。这个
?,应该是“
mContext

@穆罕默德·拉查马尼写道:


你的意思是
this.mContext

@布莱恩特解释说:

  • 这是一个对象,您可以从那里向前移动:
    this.myMemberVariable
  • 我尽量避免这种情况,尽可能不明确地引用它。如果您有一个成员变量
    \u foobar
    ,但没有相同名称的局部变量,那么在您的方法中
    \u foobar
    实际上意味着:
    \u foobar
    。(许多人使用“
    ”前缀仅用于成员变量的约定;有几个优点,其中之一就是清晰)

  • 为什么mContext.this?应该是“mContext”你的意思是
    this.mContext
    ?@Hacketo。。。哦!我弄不清楚什么时候该用电脑。this@silversunhunter. -1-
    这是一个对象,您可以从那里向前移动:this.myMemberVariable-2-我尽量避免这种情况,尽可能不明确地引用
    这个
    。如果您有一个成员变量
    \u foobar
    ,但没有同名的局部变量,那么在您的方法中
    \u foobar
    实际上意味着
    这一点。\u foobar
    。(许多人使用的惯例是“u”前缀仅用于成员变量;这有几个优点,其中之一就是清晰性)--谢谢你的解释,布莱恩