微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android Java中的另一个类中调用函数

如何解决在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 举报,一经查实,本站将立刻删除。