2012-11-19 58 views
0

不知何故,我無法完成這項工作。這是所有我試過至今:將變量從主傳遞到異步類

  1. 主要

    private String myState; 
    
    public String getState() { 
        return myState; 
    } 
    
    public void setState(String s) { 
        myState = s; 
    } 
    

    異步

    Main appState = ((Main)getApplicationContext()); 
    String state = appState.getState(); 
    

    錯誤:No enclosing instance of the type Main is accessible in scope

  2. 試圖與赫爾每個(Globals)類。

    public class Globals extends Application{ 
         private String test= "1"; 
    } 
    

    主要

    private Globals mGlobals; 
    mGlobals = new Globals(); 
    mGlobals.test = "2"; 
    //Do Async thing 
    

    異步

    private Globals mGlobals; 
    mGlobals = new Globals(); 
    print mGlobals.test; 
    // (result is 1, should be 2) 
    
  3. 而且別的東西,但不記得好。
    嘗試了很多東西(退格鍵和del鍵被過度使用:p)
    但我無法讓所有的東西都能正常工作。

    異步類沒有活動。

粘貼代碼:http://pastebin.com/ikcsdL1p

回答

1

試圖讓應用程序上下文,嘗試直接的AsyncTask構造函數傳遞上下文。正如@Mohd Mufiz在他的答案中已經提到的那樣。

+0

我試過了,但是我無法以某種方式讓它工作,我可能還做錯了,很快就會發布完整的代碼。我想我在這裏錯過了一件小事。 – Bigflow

+0

代碼發佈http:// pastebin。com/ikcsdL1p – Bigflow

+0

您沒有使用您的構造函數從Activity獲取上下文。 – osayilgan

2

聲明構造在異步類像

public class Task extends AsyncTask<Void,Void,Void> 

{ 

private Context context; 

     public Task(Context context) 
     { 
     this.context=context; 
     }  
} 

從你的主類

new Task(this).execute((Void)null); 
+0

對不起,不能得到這個工作。我不能爲其使用其他課程。 在C++中這是非常容易... – Bigflow

+0

http://pastebin.com/ikcsdL1p在這裏發佈我的代碼,我刪除了我試過的東西。你可以讓代碼合適,然後我可以看到我做錯了 – Bigflow

0

嘗試使用SharedPreferences ...要創建並調用String var ...

String button_name_11 = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getString("butname11", "EMPTY"); 

然後改變,只是代替......

getSharedPreferences("PREFERENCE", MODE_PRIVATE) 
       .edit() 
       .putString("butname11", "NEW_STRING") 
       .commit(); 
+0

'getSharedPreferences(「PREFERENCE」,MODE_PRIVATE).getString(「butname11」,「EMPTY」));'錯誤:'MODE_PRIVATE無法解析爲變量'可能因爲它沒有活動 – Bigflow

+0

嘗試使用Context.getSharedPreferences(「PREFERENCE」,Context.MODE_PRIVATE).getString(「butname11」,「EMPTY」)); – timonvlad