Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No enclosing instance of the type is accessible in scope

Tags:

java

I have this code:

Thread thread = new Thread(null, vieworders, "MagentoBackground");
thread.start();
m_progressDialog = ProgressDialog.show(SoftwarePassionView.this, 
    "Please wait...", "Retrieving data...", true);

This gives the following compilation error:

No enclosing Instance of the type SoftwarePassionView is accessible in scope

How is this caused and how can I solve it?

like image 432
Christian Avatar asked Mar 25 '11 23:03

Christian


1 Answers

The expression SoftwarePassionView.this only makes sense if the code in the example snippet is found in a non-static inner / nested class, and one of the enclosing classes is SoftwarePassionView. It says "give me the enclosing SoftwarePassionView instance".

If this code is not in that context, (as the compiler error would indicate), you need to replace the expression with a normal variable name, or method call that gives a reference to some SoftwarePassionView object.


For the record, here is an example where SoftwarePassionView.this wouldn't be a compilation error:

public class SoftwarePassionView {

    public class Inner {
        ...
        public void doIt() {
            Thread thread = new Thread(null, vieworders, "MagentoBackground");
            thread.start();
            m_progressDialog = ProgressDialog.show(SoftwarePassionView.this, 
                  "Please wait...", "Retrieving data...", true);
        }
    }
}
like image 77
Stephen C Avatar answered Nov 10 '22 01:11

Stephen C