我已阅读问题:this和this关于阅读共享首选项。但是他们仍然需要上下文来访问SharedPreferences。我想知道如何在没有上下文的情况下访问SharedPreferences。提前感谢
n7taea2i1#
我通过首先检索ApplicationContext(this),然后使用该上下文获取SharedPreferences来解决我问题。
58wvjzkj2#
应用类别:
import android.app.Application; import android.content.Context; public class MyApplication extends Application { private static Context mContext; public void onCreate() { super.onCreate(); mContext = getApplicationContext(); } public static Context getAppContext() { return mContext; } }
在AndroidManifest中声明应用程序:
<application android:name=".MyApplication" ... />
用法:
PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
kdfy810k3#
我们可以在具有Getter和Setter的helper类中使用SharedPreference示例,而不涉及上下文说明here在主要活动中添加
public static SharedPreferences preferences; preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);
然后在PreferenceHelper中使用set和get作为
public static void setName(String value) { MainActivity.preferences.edit().putString(KEY_DEMO_NAME, value ).commit(); } public static String getName() { return MainActivity.preferences.getString(KEY_DEMO_NAME,""); }
wnrlj8wa4#
Oded的回答让我得到了实用类中回调方法所需要的东西,在我的例子中,我需要一个Kotlin版本,看起来像这样。舱单
android:name=".SGAutoApp"
SGAutoApp.kt
class SGAutoApp : Application() { companion object { fun getAppContext(): Context { return this.getAppContext() } } }
就像下面我的实用类回调方法一样。
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(SGAutoApp.getAppContext())
4条答案
按热度按时间n7taea2i1#
我通过首先检索ApplicationContext(this),然后使用该上下文获取SharedPreferences来解决我问题。
58wvjzkj2#
应用类别:
在AndroidManifest中声明应用程序:
用法:
kdfy810k3#
我们可以在具有Getter和Setter的helper类中使用SharedPreference示例,而不涉及上下文说明here
在主要活动中添加
然后在PreferenceHelper中使用set和get作为
wnrlj8wa4#
Oded的回答让我得到了实用类中回调方法所需要的东西,在我的例子中,我需要一个Kotlin版本,看起来像这样。
舱单
SGAutoApp.kt
就像下面我的实用类回调方法一样。