从受保护的void类中获取值

时间:2013-04-12 17:11:56

标签: java android

我要在java中迈出第一步: 我有以下问题。来自我的受保护类'onActivityResult' 我需要在我的类'ImageUploadTask'中使用String。我怎么能这样做?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case PICK_IMAGE:
        if (resultCode == Activity.RESULT_OK) {
            Uri selectedImageUri = data.getData();
            String filePath = null;

            try {
                ...

                } else if (filemanagerstring != null) {
                    filePath = filemanagerstring;
                } 
                if (filePath != null) {
                    decodeFile(filePath);
                    // get fileName //
                    String fileName = new File(filePath).getName();
                    Log.e(TAG, "Filename:" + fileName);


                } 
        break;
    default:
    }
}

class ImageUploadTask extends AsyncTask<Void, Void, String> {
    private static final String TAG = "GalleryPreviewView";

    @Override
    protected String doInBackground(Void... unsued) {
        try {
            ....
                     Log.e(TAG, "Filename:" + fileName);
        }

    }

    @Override
    protected void onProgressUpdate(Void... unsued) {

    }

}

2 个答案:

答案 0 :(得分:1)

  

我要在java中迈出第一步:我有以下问题。从   我的受保护类'onActivityResult'我需要在我的   class'ImageUploadTask'。我怎么能这样做?

您可能希望将 fileName 变量传递给AsyncTask子类。您有几个选择:

您可以声明“class-scope”变量并仅在onActivityResult方法中初始化它:

if (filePath != null) {
   decodeFile(filePath);
   fileName = new File(filePath).getName();
   Log.e(TAG, "Filename:" + fileName);
}

然后将变量传递给AsyncTask类,如下所示:

class ImageUploadTask extends AsyncTask<String, Void, String> {
    private static final String TAG = "GalleryPreviewView";

    @Override
    protected String doInBackground(String... params) {
       String fileName = params[0];
    }

用法:

ImageUploadTask task = new ImageUploadTask();
task.execute(fileName);

但是由于您的ImageUploadTask可能是您的Activity类的内部类,因此您可以直接访问在“parent”类中声明的所有变量。

答案 1 :(得分:0)

如果您使用ImageUploadTask作为活动类的嵌入类,那么您可以这样做:

MyActivityClass.this.activityfunction();

or 

MyActivityClass.this.activityFieldVariable;