在Android-GetSharedRef中的静态类中引用非静态方法

在Android-GetSharedRef中的静态类中引用非静态方法,android,sharedpreferences,static-members,Android,Sharedpreferences,Static Members,我有以下代码: Context context = Activity.getApplicationContext(); SharedPreferences settings = context.getSharedPreferences("AutoMsgSharedPrefs", MODE_PRIVATE); // Writing data to SharedPreferences SharedPreferences.

我有以下代码:

  Context context = Activity.getApplicationContext();
             SharedPreferences settings = context.getSharedPreferences("AutoMsgSharedPrefs", MODE_PRIVATE);

            // Writing data to SharedPreferences
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("key", "some value");
            editor.commit();
我一直在尝试使用SharedPref来存储会话类中给出的消息,如示例-。但,若我试图在会话类的构造函数中实现非静态方法,则无法从静态类中引用该方法。那么我该如何解决这个问题呢

以下是我按照建议更新时出现的错误截图:


要获取上下文,无需使用Activity类。更改此代码

Context context = Activity.getApplicationContext();


要获取上下文,无需使用Activity类。更改此代码

Context context = Activity.getApplicationContext();


说明:Activity类没有静态方法getApplicationContext,因为此方法是非静态的,所以您需要有一个对象实例。因此,对上下文实例上的活动调用此方法。

说明:Activity类没有静态方法getApplicationContext,因为此方法是非静态的,所以您需要有一个对象实例。因此,对上下文实例上的活动调用此方法。

此处

Context=Activity.getApplicationContext

此行不返回应用程序调用GetSharedReferences的有效上下文

要从非活动、服务调用GetSharedReferences,。。。您需要从应用程序组件(如活动、服务等)传递有效上下文的类

若要在对话中获取上下文,请使用已在给定示例中创建的对话类构造函数,您需要再添加一个参数:

Context mContext;
public Conversation(int conversationId, String participantName,
                            List<String> messages,Context mContext) {
            .....
            this.mContext=mContext;
        }
这里

Context=Activity.getApplicationContext

此行不返回应用程序调用GetSharedReferences的有效上下文

要从非活动、服务调用GetSharedReferences,。。。您需要从应用程序组件(如活动、服务等)传递有效上下文的类

若要在对话中获取上下文,请使用已在给定示例中创建的对话类构造函数,您需要再添加一个参数:

Context mContext;
public Conversation(int conversationId, String participantName,
                            List<String> messages,Context mContext) {
            .....
            this.mContext=mContext;
        }
正如@ρцσѕρєцK已经指出的,您必须以某种方式授予您的非上下文类对您的上下文实例的访问权。例如,通过引入新参数

正如@ρцσѕρєцK已经指出的,您必须以某种方式授予您的非上下文类对您的上下文实例的访问权。例如,通过引入新参数


对话是静态类?是:对话是静态类?是:在对话中传递构造函数it self中的上下文在对话中传递构造函数it self中的上下文
public Conversation(int conversationId, String participantName,
                            List<String> messages, Context context) {
            .....

        }
public void doStuff(Context context) {
          // do your work here
}