簡體   English   中英

我用getActivity方法做錯了什么?

[英]What am I doing wrong with the getActivity method?

我無法弄清楚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開發人員頁面:保存鍵值數據

每當我將getActivity()放入Android Studio時,都會說它無法解析該方法。

我不知道我該怎么辦,我在Stack Overflow上遇到的所有其他問題最終都沒有告訴我任何事情。

getActivity會做什么和/或我在做什么錯。

每當我將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);
}

我對android編程比較陌生

很可能您是編程新手,因為您可能知道另一種編程語言,但是您來對地方了!

編碼:

Context context = getActivity();
SharedPreferences sharedPref = 
    context.getSharedPreferences(
        MY_PREFS_NAME, 
        Context.MODE_PRIVATE
    );

只是代碼的一部分。 它不是您需要的重要部分,因為所有非初學者都知道它是什么。

在編程中(對我而言),學習搜索比學習Therms更有用! 在這種情況下,您應該搜索“ getSharedPreferences示例”。

然后,您將看到,如果您處於Activity類中,則不需要getActivity。 如果您在Fragment類或其他任何類中,則需要s。 取決於您所在的位置。

例如, 這里不是getActivity()

而且這里有一個getApplicationContext()

在這里,您將找到如何使用它的教程

即使您將Google的代碼替換為以下代碼,您的代碼也可以使用:

SharedPreferences sharedPref = this.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);

這是因為您的活動擴展了Android活動類,並且如果您查看Android活動類的文檔,則會看到getSharedPreferences()方法需要一個Context(Context.getSharedPreferences(..),該活動已將其擴展class(活動擴展了Context類),請嘗試用上面的代碼代替您擁有的所有代碼,並且應該可以使用。

getActivity()是屬於Fragment或FragmentCompat類的方法(請檢查Android API中的這些類),它所做的只是獲取對該片段所附加的活動的上下文的引用。

如果您只需要訪問sharedpreferences,則需要從Activity或Service中調用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM