方法getApplication()未定义类型(我的类)

时间:2014-10-19 11:53:52

标签: java android variables undefined global

我正在使用全局变量" GlobalVariables"在一个单独的类中,我尝试在以下代码中使用它,但它总是给我错误:

The method getApplication() is undefined for the type UploadPicture

我尝试了以下但仍有错误:

((GlobalVariables) this.getApplication()).set_FileUploading(false);

这里已经问到了qustion,但不幸的是所有的回答者都没有和我合作并给了我同样的错误!有什么建议吗?

public class UploadPicture extends AsyncTask<Void, Long, Boolean> {

private DropboxAPI<?> mApi;
private String mPath;
private File mFile;
private long mFileLen;
private UploadRequest mRequest;
private Context mContext;
private String mErrorMsg;
private File outFiles;

public UploadPicture(Context context, DropboxAPI<?> api, String dropboxPath, File file) {
    mContext = context.getApplicationContext();
    mFileLen = file.length();
    mApi = api;
    mPath = dropboxPath;
    mFile = file;        
}
@Override
protected Boolean doInBackground(Void... params) {
    try {
        FileInputStream fis = new FileInputStream(mFile);
        String path = mPath + outFiles.getName();
        mRequest = mApi.putFileOverwriteRequest(path, fis, mFile.length(),
                new ProgressListener() {
            @Override
            public long progressInterval() {
                return 500;
            }

            @Override
            public void onProgress(long bytes, long total) {
                //publishProgress(bytes);
            }
        }
        );

        if (mRequest != null) {
            mRequest.upload();
            ((GlobalVariables) UploadPicture.this.getApplication()).set_FileUploading(false);               
            return true;
        }

    } catch (DropboxUnlinkedException e) {
        // This session wasn't authenticated properly or user unlinked
        mErrorMsg = "This app wasn't authenticated properly.";
    } catch (DropboxFileSizeException e) {
        // File size too big to upload via the API
        mErrorMsg = "This file is too big to upload";
    } catch (DropboxPartialFileException e) {
        // We canceled the operation
        mErrorMsg = "Upload canceled";
    } catch (DropboxServerException e) {
        // Server-side exception.  These are examples of what could happen,
        // but we don't do anything special with them here.
        if (e.error == DropboxServerException._401_UNAUTHORIZED) {
            // Unauthorized, so we should unlink them.  You may want to
            // automatically log the user out in this case.
        } else if (e.error == DropboxServerException._403_FORBIDDEN) {
            // Not allowed to access this
        } else if (e.error == DropboxServerException._404_NOT_FOUND) {
            // path not found (or if it was the thumbnail, can't be
            // thumbnailed)
        } else if (e.error == DropboxServerException._507_INSUFFICIENT_STORAGE) {
            // user is over quota
        } else {
            // Something else
        }
        // This gets the Dropbox error, translated into the user's language
        mErrorMsg = e.body.userError;
        if (mErrorMsg == null) {
            mErrorMsg = e.body.error;
        }
    } catch (DropboxIOException e) {
        // Happens all the time, probably want to retry automatically.
        mErrorMsg = "Network error.  Try again.";
    } catch (DropboxParseException e) {
        // Probably due to Dropbox server restarting, should retry
        mErrorMsg = "Dropbox error.  Try again.";
    } catch (DropboxException e) {
        // Unknown error
        mErrorMsg = "Unknown error.  Try again.";
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    return false;
}

}

编辑:我现在正在添加我的&#34; VariableGlobales&#34; CALSS:

public  class  GlobalVariables extends Application {
private Boolean _IsIOIORunning=false;
private Boolean _FileUploading=false;

public Boolean get_IsIOIORunning()
{
    return _IsIOIORunning;
}    
public void set_IsIOIORunning(Boolean _IsIOIORunning)
{
    this._IsIOIORunning = _IsIOIORunning;
}


public Boolean get_FileUploading()
{
    return _FileUploading;
}    
public void set_FileUploading(Boolean _FileUploading)
{
    this._FileUploading = _FileUploading;
}

1 个答案:

答案 0 :(得分:0)

这是正常的,UploadPicture不会扩展GlobalVariables,但会扩展AsyncTask。

这是我的“GlobalVariables”

public class AppInfo extends Application {

    private static Context context;
    private static String user;

    public void onCreate(){
        super.onCreate();
        AppInfo.context = getApplicationContext();
        user = null;
    }

    public static Context getAppContext()           {return AppInfo.context;}
    public static String getUser()                  {return user;}

    public static void setUser(String user)         {AppInfo.user = user;}
}

我把它称之为:

AppInfo.getUser();

编辑:

GlobalVariables应该使用静态方法和变量:

public  class  GlobalVariables extends Application {
private static Boolean _IsIOIORunning=false;
private static  Boolean _FileUploading=false;

public static Boolean get_IsIOIORunning() {
    return _IsIOIORunning;
}

public static void set_IsIOIORunning(Boolean _IsIOIORunning) {
    GlobalVariables._IsIOIORunning = _IsIOIORunning;
}

public static Boolean get_FileUploading(){
    return _FileUploading;
}

public static void set_FileUploading(Boolean _FileUploading){
    GlobalVariables._FileUploading = _FileUploading;
}
}