2013-04-12 23 views
0

我要走在我的第一步java: 我有以下問題。從我的受保護類'onActivityResult' 我需要在我的類'ImageUploadTask'中有字符串。我怎樣才能做到這一點?從受保護的虛空類獲得價值

@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) { 

    } 

} 
+0

這不是對你的問題的直接回答,但ImageUploadTask是一個AsyncTask,而不是一個活動。因此,當它結束時它不會調用'onActivityResult()'。 –

+0

關於你的問題......我並沒有真正明白問題所在,但是如果你需要訪問一個受保護的變量,可以創建一個你的其他類可以訪問的getter。 –

回答

1

i'm去我的第一個步驟,在Java中:我有以下問題。從 我受保護的類'onActivityResult'我需要在我的 類'ImageUploadTask'中有字符串。我怎樣才能做到這一點?

也許你想通過文件名變量到你的AsyncTask子類。您有幾種選擇:

你可以聲明「類範圍的」變量,只有初始化它在你的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類的nner類,你可以直接訪問在「父」類中聲明的所有變量。

0

如果您正在使用ImageUploadTask作爲嵌入類的活動類的,那麼你可以這樣做:

MyActivityClass.this.activityfunction(); 

or 

MyActivityClass.this.activityFieldVariable;