0

非同期タスク内から保存された設定にアクセスしようとしていますが、常に「設定を解決できません」というエラーが表示され続けます。何か案は?コードの一部は次のとおりです。

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

前もって感謝します!ロバート

4

2 に答える 2

3

を使用してpreferece変数にアクセスする必要がありますLogin.this.preferences。また、AsyncTaskが内部クラス(に含まれるLogin)であることを確認してください。

于 2012-12-17T20:49:46.023 に答える
0

これを試して

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

設定フィールドを公開します

于 2012-12-17T20:41:23.027 に答える