Java 在作用域中无法访问该类型的封闭实例

Java 在作用域中无法访问该类型的封闭实例,java,Java,我有以下代码: Thread thread = new Thread(null, vieworders, "MagentoBackground"); thread.start(); m_progressDialog = ProgressDialog.show(SoftwarePassionView.this, "Please wait...", "Retrieving data...", true); 这会导致以下编译错误: public class SoftwarePassionV

我有以下代码:

Thread thread = new Thread(null, vieworders, "MagentoBackground");
thread.start();
m_progressDialog = ProgressDialog.show(SoftwarePassionView.this, 
    "Please wait...", "Retrieving data...", true);
这会导致以下编译错误:

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);
        }
    }
}
在作用域中无法访问SoftwareActiveView类型的封闭实例


这是如何导致的,我如何解决它?

您正在尝试为封闭类获取
这一
,如果您在匿名类中,这将起作用,但我猜情况并非如此


请阅读表达式
软件激情视图。只有在示例代码段中的代码位于非静态内部/嵌套类中,并且其中一个封闭类是
软件激情视图
时,此表达式才有意义。上面写着“给我附上的
softwarecompionview
实例”

如果此代码不在该上下文中(如编译器错误所示),则需要将表达式替换为普通变量名或方法调用,该方法调用提供了对某些
softwarecompionview
对象的引用


下面是一个示例,其中
softwarecompionview。这不会是编译错误:

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);
        }
    }
}

如果您想将代码段放在不同的类而不是SoftwareCompositionView中,可以在线程构造函数中传递SoftwareCompositionView类的实例

以下是一个例子:

Class SoftwarePassionView {
  ....

  Thread thread = new something(SoftwarePassionView);
  thread.start();
  ......
  }
在另一班

 Class something extends Thread{
  SoftwarePassionView SPV;
  something(SoftwarePassionView){
  super(null, vieworders, "MagentoBackground");
  this.SPV = SoftwarePassionView}
  }

   @Override
public void run(){
    m_progressDialog = ProgressDialog.show(SPV, 
    "Please wait...", "Retrieving data...", true);
     }

  }

这段代码是在类
softwarecompionview
还是它的子类中?我不知道你在说什么。能举个例子吗。这是一个非静态的内部。