我无法弄清楚getActivity方法的作用。
我对android编程比较陌生,我正尝试为我的应用提供少量的存储空间。为此,我使用了SharedPreferences。通常,我不会复制“单词对单词”的Android开发人员上的内容,但是我将放弃希望,因为我什么都无法工作。我什至无法从网站上获取代码以正常工作
这是我在应用程序中拥有的相关代码。
public String activeTab = "course_reg";
private static final String DEBUG_TAG = "Gestures";
public static final String MY_PREFS_NAME = "MyPrefsFile";
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
MY_PREFS_NAME, Context.MODE_PRIVATE);
下面是来自Android开发人员的代码。
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
这是网站Android Developer page: Save key-value data
每次我将getActivity()放入Android Studio时,都会说它无法解析该方法。
我不知道该怎么办,我在Stack Overflow上遇到的所有其他问题都没有告诉我任何事情。
getActivity做什么和/或我做错了什么。
答案 0 :(得分:2)
每次我将getActivity()放入Android Studio时,都会说它无法解析该方法。
这是因为很可能是您在扩展Activity或AppCompatActivity的类内编写代码,而这两个都不具有getActivity()方法。
片段类中存在getActivity()方法,该方法用于获取对其所附接的Activity的引用。此方法可用于完成需要Activity上下文的工作。
您可以简单地使用get SharedPreferences而不先添加上下文。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences sp = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
}
答案 1 :(得分:1)
我对android编程比较陌生
很可能您是编程新手,因为您可能知道另一种编程语言,但是您来对地方了!
代码:
Context context = getActivity();
SharedPreferences sharedPref =
context.getSharedPreferences(
MY_PREFS_NAME,
Context.MODE_PRIVATE
);
仅是代码的一部分。它不是您需要的重要部分,因为所有非初学者都知道它是什么。
(对我而言)在编程中(学到很多)比学习“ Therms”更有用。 在这种情况下,您应该搜索“ getSharedPreferences示例”。
然后,您将看到,如果您处于Activity类中,则不需要getActivity。如果您在Fragment类或其他任何类中,则需要s。取决于你在哪里。
例如here不是getActivity()
here和一个getApplicationContext()
here和您将找到如何使用它的教程
答案 2 :(得分:1)
即使您将Google的代码替换为以下代码,您的代码也可以使用:
SharedPreferences sharedPref = this.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
这是因为您的活动扩展了Android活动类,并且如果您查看Android活动类的文档,则将看到getSharedPreferences()方法需要一个Context(Context.getSharedPreferences(..),该上下文已经扩展了通过Activity类(Activity扩展了Context类)。尝试用上面的代码代替您拥有的所有东西,并且应该起作用。
答案 3 :(得分:0)
getActivity()是属于Fragment或FragmentCompat类的一种方法(请检查Android API中的这些类),它所做的只是获取对该片段所附加的活动的上下文的引用。
如果您只需要访问共享的首选项,则从活动或服务中调用它时,需要调用getContext()或关键字“ this”。
在您的代码段中,我猜所有这些都是您的类中的属性或常量,因此,如果从Activity或服务中使用它,请将其更改为该属性或常量。如果要在其他非Android对象中使用它,则必须从其他地方访问(使用匕首并注入上下文,或者在应用程序类中对其进行一些静态引用,但不建议使用此最后一个选项)
public String activeTab = "course_reg";
private static final String DEBUG_TAG = "Gestures";
public static final String MY_PREFS_NAME = "MyPrefsFile";
Context context = getContext(); // or just Context context = this;
SharedPreferences sharedPref = context.getSharedPreferences(
MY_PREFS_NAME, Context.MODE_PRIVATE);