如何解决在Android Java中的另一个类中调用函数
我一直在寻找这个问题的答案,并且发现了许多类似的问题,但是似乎没有一个非常相似,而且我在网络上发现的所有解决方案都无法解决该问题。
对于我正在编写的Android应用,我需要将Android偏好设置保存到数据库中。为此,我想创建一个单独的类,该类具有可以调用以同步,更新等首选项的函数。所以这就是问题
- 从mainActivity中调用syncSettings类中的initializeSaveSettings()
我现在尝试执行此操作的方法是致电:
syncSettings sync = new syncSettings();
sync.initiateSettingSave();
进入syncSettings类:
public class syncSettings extends Context {
public void initiateSettingsSave(){
PreferenceManager.setDefaultValues(syncSettings.this,R.xml.root_preferences,false);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}
}
等 问题在于,SharedPreferences需要扩展Context,为了使其正常工作,Android Studio给出了将syncSettings更改为
的错误public abstract class syncSettings extends Context {
这样做会在调用函数时给新的syncSettings()带来错误,删除摘要会在syncSettings类中产生错误。我该怎么做才能使这项工作?如果您需要更多信息,请告诉我。
谢谢。
编辑:我对Android开发非常陌生,所以如果我说或问些愚蠢的话,那很可能就是原因...
解决方法
尝试一下:
public class syncSettings {
private Context context;
public syncSettings(Context context){
this.context = context;
}
public void initiateSettingsSave(){
PreferenceManager.setDefaultValues(syncSettings.this,R.xml.root_preferences,false);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
}
}
在您的活动中:
syncSettings sync = new syncSettings(this);
sync.initiateSettingSave();
,
我不明白您扩展上下文十的原因。但是您可以使用此类。
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class PrefUtils {
/**
* Called to save supplied value in shared preferences against given key.
* @param context Context of caller activity
* @param key Key of value to save against
* @param value Value to save
*/
public static void saveToPrefs(Context context,String key,String value) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
editor.putString(key,value);
editor.commit();
}
/**
* Called to retrieve required value from shared preferences,identified by given key.
* Default value will be returned of no value found or error occurred.
* @param context Context of caller activity
* @param key Key to find value against
* @param defaultValue Value to return if no data found against given key
* @return Return the value found against given key,default if not found or any error occurs
*/
public static String getFromPrefs(Context context,String defaultValue) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
try {
return sharedPrefs.getString(key,defaultValue);
} catch (Exception e) {
e.printStackTrace();
return defaultValue;
}
}
/**
*
* @param context Context of caller activity
* @param key Key to delete from SharedPreferences
*/
public static void removeFromPrefs(Context context,String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = prefs.edit();
editor.remove(key);
editor.commit();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。