2013-04-29 53 views
1

基本上我想要訪問已經在不同類中的doInBackground中分配的變量,但我不確定如何在此處執行此操作。以下是我的相關課程結構。這是一個android應用程序。謝謝。AsyncTask - 從不同類的doInBackground訪問變量

public class CreateNewPlayers extends AsyncTask<String, String, String> { 

public String doInBackground(String... args) { 


       String playerid = playerid1.getText().toString(); 
+0

是該值任務,或者你的結果可以訪問intrim數據想在流程中間返回它? – Gustek 2013-04-29 01:30:04

+0

這是從用戶輸入中取得的結果。 – dGray 2013-04-29 01:35:51

+0

我不明白你在做什麼。你已經在doInBackground中看到了一個AsyncTask你從用戶輸入中獲得了價值,並且想要在別的地方訪問這個值? – Gustek 2013-04-29 01:38:34

回答

1

您可以使用publishProgress()和onProgressUpdate()

public class CreateNewPlayers extends AsyncTask<String, String, String> { 
    public SomeOtherClass soc = null; 

@Override 
public String doInBackground(String... args) { 


       String playerid = playerid1.getText().toString(); 
       publishProgress(playerid); 

@Override 
public String onProgressUpdate(String... args) { 
    super.onProgressUpdate(args); 
    soc.setPlayerID(args[0]); 
    soc.DoSomething(); 
} 

編輯 更完整

public class SomeOtherClass { 
    protected String thisPlayerID = null; 

    public setPlayerID (String pid) { 
     thisPlayerID = pid; 
    } 

    public DoSomthing() { 
     // act on data 
    } 
} 

public class mainActivity extend Activity { 
    public CreateNewPlayers cnp = new CreateNewPlayers(); 
    public SomeOtherClass soc = new SomeOtherClass(); 

    @Override 
    protected void onCreate(Bundle data) { 
     super.onCreate(data); 
     cnp.soc = soc; 
     cnp.exectue("") 
    }  
} 
+0

謝謝,雖然我不太清楚我應該如何使用onProgressUpdate。 – dGray 2013-04-29 01:41:23

+0

onProgressUpdate在publishProgress時被調用。 DoSomethingWithData可以替換爲你需要用你的playerid變量做的任何事情 – Tree 2013-04-29 01:50:03