我收到一个奇怪的错误,提示“在范围内无法访问类型 MainActivity 的封闭实例”,我不确定如何处理这个问题。该错误专门针对 MainActivity.this
。发生的事情是,我调用其他类在后台工作,我需要在某个点显示一个对话框来打断用户替换一些文件,进行更新。我怎样才能像我正在做的那样通过另一个类来设置对话,或者是否有其他方法可能是广播接收器?
这是我尝试在另一个类中激活对话框
public class UnZip
{
public static void startzip(String pathzip, String folderpath)
{
File zipFile = new File(pathzip);
Log.d(TAG, "INSDIE of startzip path is " + zipFile);
if(isZipValid(zipFile))
{
MainActivity.mProgressDialog = new ProgressDialog(MainActivity.this);
MainActivity.mProgressDialog.setMessage("Please Wait while updating...");
MainActivity.mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
MainActivity.mProgressDialog.setCancelable(false);
MainActivity.mProgressDialog.show();
Log.d(TAG, "Made it to StartZIp");
new UnZipTask().execute(pathzip, folderpath);
}
else
{
Log.d(TAG, "Made it to StartZIp FALSE");
Toast.makeText(MainActivity.this, "Zip related error", Toast.LENGTH_SHORT).show();
}
}
}
最佳答案
MainActivity.this 只有在您位于 MainActivity 的内部类中时才有效。如果您在 MainActivity 本身,只需使用它。如果您完全在另一个类(class),则需要将一个 Context 实例(通常是您所在的 Activity )传递给它,然后改为传递它。
关于Android 在不同的 Activity 上显示 ProgressDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22265867/