从助手那里访问共享首选项 class
Access shared preferences from a helper class
我有一个调用助手 class 的片段,以便使用 Volley 发出 jsonRequest。
根据响应,助手 class 创建一个自定义对象,但为了设置它,它需要检查共享首选项中存储的一些值。
问题是我无法访问帮助器中的 getSharedPreferences class。
public class MyDataHandler {
ArrayList<MyItem> itemsArrayList = new ArrayList<>();
public List<MyItem> getAll(Boolean completed, String current, final MyAsyncResponse callBack) {
String url = "https://my.api/" + current;
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
url,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0; i < response.length(); i++) {
try {
JSONObject jsonObject = response.getJSONObject(i);
MyItem myItem = new MyItem();
if (!completed) {
SharedPreferences sharedPreferences = getSharedPreferences("MyApp", MODE_PRIVATE); // this doesn't work
if (sharedPreferences.getBoolean("someKey", false)) {
// set properties in MyItem
}
}
itemsArrayList.add(myItem);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (null != callBack) callBack.processFinished(itemsArrayList);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
AppController.getInstance().addToRequestQueue(jsonArrayRequest);
return itemsArrayList;
}
如果此 class 未附加到任何特定 activity,我如何访问共享首选项?
我假设您正在实例化 MyDataBaseHandler,因为“getAll”是一个非静态函数
像这样创建一个构造函数和一个成员变量:-
MyDataBaseHandler{
Context context;
public MyDataHandler(Context context){ //pass your activity here
this.context=context;
}
// write rest of your code
}
现在您可以使用此上下文成员变量并使用 context.getSharedPreference("MyApp", Context.MODE_PRIVATE).
访问您的共享偏好
我有一个调用助手 class 的片段,以便使用 Volley 发出 jsonRequest。
根据响应,助手 class 创建一个自定义对象,但为了设置它,它需要检查共享首选项中存储的一些值。
问题是我无法访问帮助器中的 getSharedPreferences class。
public class MyDataHandler {
ArrayList<MyItem> itemsArrayList = new ArrayList<>();
public List<MyItem> getAll(Boolean completed, String current, final MyAsyncResponse callBack) {
String url = "https://my.api/" + current;
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
url,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0; i < response.length(); i++) {
try {
JSONObject jsonObject = response.getJSONObject(i);
MyItem myItem = new MyItem();
if (!completed) {
SharedPreferences sharedPreferences = getSharedPreferences("MyApp", MODE_PRIVATE); // this doesn't work
if (sharedPreferences.getBoolean("someKey", false)) {
// set properties in MyItem
}
}
itemsArrayList.add(myItem);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (null != callBack) callBack.processFinished(itemsArrayList);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
AppController.getInstance().addToRequestQueue(jsonArrayRequest);
return itemsArrayList;
}
如果此 class 未附加到任何特定 activity,我如何访问共享首选项?
我假设您正在实例化 MyDataBaseHandler,因为“getAll”是一个非静态函数 像这样创建一个构造函数和一个成员变量:-
MyDataBaseHandler{
Context context;
public MyDataHandler(Context context){ //pass your activity here
this.context=context;
}
// write rest of your code
}
现在您可以使用此上下文成员变量并使用 context.getSharedPreference("MyApp", Context.MODE_PRIVATE).
访问您的共享偏好