将变量从main传递给Async类

时间:2012-11-19 09:58:20

标签: android android-asynctask global-variables

不知怎的,我无法完成这件事。这就是我到现在为止所做的一切:

  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. 尝试过Helper(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)
    但我不能让一切正常。

    异步类没有活动。

  4. 代码粘贴:http://pastebin.com/ikcsdL1p

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

尝试直接在AsyncTask构造函数中传递Context,而不是尝试获取Application Context。正如@Mohd Mufiz在他的答案中已提到的那样。

答案 2 :(得分:0)

尝试使用SharedPreferences ...创建并调用String var use ...

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

然后改变,只是......

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