从异步任务访问首选项



我正在尝试从异步任务中访问保存的首选项,但我总是收到错误"无法解析首选项"。有什么想法吗?以下是代码的一部分:

    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) {
    }
}

提前感谢!罗伯特

您应该使用 Login.this.preferences 访问您的首选变量。还要确保您的 AsyncTask 是一个内部类(包含在 Login 中)。

试试这个

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

并公开首选项字段

相关内容

  • 没有找到相关文章

最新更新