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. 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. 他にもありますが、よく覚えていません。
    多くのことを試しました(バックスペースとデルボタンは使いすぎです:p)
    しかし、すべてを機能させることはできません。

    非同期クラスにはアクティビティがありません。

貼り付けたコード: http://pastebin.com/ikcsdL1p

4

3 に答える 3

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);
于 2012-11-19T10:07:27.873 に答える
1

Application Context を取得しようとする代わりに、 Context を AsyncTask コンストラクターに直接渡すようにしてください。@Mohd Mufizが彼の回答ですでに述べたように。

于 2012-11-19T10:47:23.233 に答える
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();
于 2012-11-19T10:22:17.493 に答える