4 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
每次我將 getActivity() 放入 Android Studio 時(shí),它都會(huì)說(shuō)它無(wú)法解析該方法。
這是因?yàn)槟芸赡苁窃跀U(kuò)展 Activity 或 AppCompatActivity 的類中編寫代碼,并且兩者都沒(méi)有 getActivity() 方法。
getActivity() 方法存在于 Fragment 類中,它用于獲取對(duì)它所附加的 Activity 的引用。此方法可用于完成需要 Activity 上下文的工作。
您可以簡(jiǎn)單地使用 get SharedPreferences 而無(wú)需添加上下文。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences sp = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
}

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
即使您將 google 的代碼替換為以下代碼,您的代碼也將起作用:
SharedPreferences sharedPref = this.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
這是因?yàn)槟?Activity 擴(kuò)展了 Android Activity 類,如果您查看 Android Activity 類的文檔,您會(huì)看到 getSharedPreferences() 方法需要一個(gè) Context (Context.getSharedPreferences(..),它已經(jīng)被 Activity 擴(kuò)展了類(活動(dòng)擴(kuò)展上下文類)。嘗試用上面的代碼代替你擁有的任何東西,它應(yīng)該可以工作。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
getActivity() 是屬于 Fragment 或 FragmentCompat 類的方法(檢查 Android API 中的這些類),它所做的只是獲取對(duì)片段附加到的活動(dòng)上下文的引用。
如果您只需要訪問(wèn) sharedpreferences,則需要調(diào)用 getContext() 或關(guān)鍵字“this”(如果您從 Activity 或 Service 中調(diào)用它)。
在您的代碼片段中,我猜所有這些都是您類中的屬性或常量,因此如果在 Activity 或服務(wù)中使用它,請(qǐng)將其更改為此。如果您在另一個(gè)非 android 對(duì)象中使用它,則必須從其他地方訪問(wèn) if(使用 dagger 并注入上下文,或者在應(yīng)用程序類中對(duì)其進(jìn)行一些靜態(tài)引用,但不推薦使用最后一個(gè)選項(xiàng)) .
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);

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
我對(duì)android編程比較陌生
很可能您是編程新手,因?yàn)槟赡苤懒硪环N編程語(yǔ)言,但您來(lái)對(duì)地方了!
編碼:
Context context = getActivity();
SharedPreferences sharedPref =
context.getSharedPreferences(
MY_PREFS_NAME,
Context.MODE_PRIVATE
);
只是代碼的一部分。它不是你需要的重要部分,因?yàn)樗蟹浅鯇W(xué)者都知道它是什么。
在編程中(對(duì)我來(lái)說(shuō))學(xué)習(xí)搜索比學(xué)習(xí)熱學(xué)更有用!在這種情況下,您應(yīng)該搜索“getSharedPreferences 示例”。
您會(huì)看到,如果您在 Activity 類中,則不需要 getActivity。如果您在 Fragment 課程或其他任何課程中,則需要。取決于你在哪里。
例如這里它不是getActivity()
這里有一個(gè)getApplicationContext()
在這里你會(huì)找到一個(gè)如何使用它的教程
添加回答
舉報(bào)