2012-11-19 2 views
0

어쨌든,이 작업을 수행 할 수 없습니다. 메인에서 Async 클래스로 변수 전달

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

오류

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

  • 이 헬리콥터와 시도

    1. 홈페이지 :

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

      비동기 이것은 지금까지 내가 뭘하려 전부입니다 per (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) 
      
    2. 뭔가지만, 좋은 기억하지 않습니다.
      많은 것들이 시도되었습니다 (백 스페이스와 del 버튼이 많이 사용되었습니다 : p)
      그러나 나는 모든 것을 작동시킬 수 없습니다.

      비동기 클래스에는 활동이 없습니다.

    코드 붙여 넣기 : http://pastebin.com/ikcsdL1p

  • 답변

    1

    대신 응용 프로그램 컨텍스트를 얻기 위해 노력하는, AsyncTask를 생성자에 직접 상황을 전달하려고합니다. @Mohd Mufiz가 이미 그의 대답에서 언급했듯이.

    +0

    나는 시도했지만 어떻게 든 작동하도록 할 수는 없지만, 나는 여전히 잘못된 것을하고 곧 전체 코드를 게시 할 것입니다. 나는 여기에 작은 것을 놓친 것 같아. – Bigflow

    +0

    http : // pastebin 코드가 게시되었습니다.com/ikcsdL1p – Bigflow

    +0

    활동에서 컨텍스트를 가져 오기 위해 생성자를 사용하지 않았습니다. – osayilgan

    2

    가 된 SharedPreferences를 ... 사용하는

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

    죄송합니다.이 기능을 사용할 수 없습니다. 다른 클래스를 사용할 수는 없습니다. C++에서이 작업은 훨씬 쉬워졌습니다. – Bigflow

    +0

    http://pastebin.com/ikcsdL1p 여기에서 제 코드를 게시했습니다. 제가 시도한 것을 삭제했습니다. 당신은 thatr 코드를 적합하게 만들 수 있습니까? 그러면 내가 잘못한 것을 볼 수 있습니다. – Bigflow

    0

    시도

    public class Task extends AsyncTask<Void,Void,Void> 
    
    { 
    
    private Context context; 
    
         public Task(Context context) 
         { 
         this.context=context; 
         }  
    } 
    

    처럼 그리고 당신의 메인 클래스에서 비동기 클래스의 생성자를 선언 String var use ...를 호출하고 호출합니다.

    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

    관련 문제