2012-12-17 3 views
0

asynctask에서 저장된 환경 설정에 액세스하려고하지만 "환경 설정을 확인할 수 없습니다."오류가 계속 발생합니다. 어떤 아이디어? 다음은 코드의 일부입니다.asynctask에서 액세스 환경 설정

public class Login extends SherlockActivity { 
     SharedPreferences preferences; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     preferences = PreferenceManager.getDefaultSharedPreferences(this); 

     new LongOperationLogin(this).execute(); 
    } 
} 

class LongOperationLogin extends AsyncTask<String, Void, String> { 
    private Login longOperationContext = null;  

    public LongOperationLogin(Login context) { 
     longOperationContext = context; 
    } 



    @Override 
    protected String doInBackground(String... params) { 
    //THIS IS WHERE I NEED THE VALUE 
     String username = this.preferences.getString("username", "n/a"); 
     try { 
     //JSON fetching 
      } 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
      Log.v("Error", "URL exc"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.v("ERROR", "IOEXECPTOIn"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Log.v("Error", "JsonException"); 
     } 
     return null; 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     } 
    } 

    protected void onPreExecute() { 
    } 

protected void onProgressUpdate(Void... values) { 
    } 
} 

미리 감사드립니다. 로버트

+1

'Login.this.preferences'로 액세스를 시도하십시오. –

+0

@ A - C : 저를 때려 눕히세요. – Squonk

+0

@Squonk 적어도 호의를 베푸고 있습니다. 사람들이 내 의견을 듣고 대답으로 바뀌는 것을 보았습니다. 내가 옳은지 확신 할 수 없을 때에도. –

답변

3

공공 환경 설정 필드를 확인합니다. 또한 AsyncTask가 내부 클래스 (Login에 있음)인지 확인하십시오.

0

당신은 Login.this.preferences로 preferece 변수에 액세스해야이

String username = longOperationContext.preferences.getString("username", "n/a"); 

을 시도하고