Fragment 내에서 SharedPreferences를 읽으려고합니다. 내 코드는 다른 활동에서 환경 설정을 얻는 데 사용하는 것입니다.
SharedPreferences preferences = getSharedPreferences("pref", 0);
오류가 발생합니다
Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper
이 링크를 따르려고 시도했지만 정적 메서드 및
정적 SharedPreferences를 통해 SharedPreferences 액세스 운이 없습니다 . 모든 솔루션에 감사드립니다.
답변
이 메서드 getSharedPreferences
는 Context
객체 의 메서드 이므로 a 에서 getSharedPreferences를 호출하는 것만으로 Fragment
는 작동하지 않습니다. Context가 아니기 때문입니다! (Activity는 Context의 확장이므로 getSharedPreferences를 호출 할 수 있습니다.)
따라서 응용 프로그램 컨텍스트를 가져와야합니다.
// this = your fragment
SharedPreferences preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
답변
표시된 답변이 저에게 효과가 없었습니다.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
편집하다:
또는 다음을 제거하십시오 this
.
SharedPreferences prefs = getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
답변
주의 사항으로 위의 사용자가 제공 한이 답변은 정확합니다.
SharedPreferences preferences = this.getActivity().getSharedPreferences("pref",0);
그러나 onAttach가 호출되기 전에 조각에서 무언가를 얻으려고 시도하면 getActivity ()가 null을 반환합니다.
답변
다음 과 같이 조각 의 SharedPrefences
in onAttach
메서드를 만들 수 있습니다 .
@Override
public void onAttach(Context context) {
super.onAttach(context);
SharedPreferences preferences = context.getSharedPreferences("pref", 0);
}
답변
이것은 나를 위해 트릭을했다
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
여기에서 확인하십시오 https://developer.android.com/guide/topics/ui/settings.html#ReadingPrefs
답변
getActivity()
와 onAttach()
같은 상황에서 didnot 도움 나
어쩌면 내가 뭔가 잘못을했다
하지만! 나는 다른 결정을 발견
나는 필드를 만든 Context thisContext
내 조각 내부를
그리고 방법 onCreateView에서 현재 컨텍스트를 가지고
지금은 조각에서 공유 현 작업 할 수 있습니다
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
thisContext = container.getContext();
...
}
답변
조각에서 기본 설정을 정의하려면 :
SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR",Context.MODE_PRIVATE);
editor.putString("credi_credito",cre);
editor.commit();
다른 활동을 호출하거나 기본 설정 데이터를 조각화하려면 :
SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR", Context.MODE_PRIVATE);
credit=pref.getString("credi_credito","");
if(credit.isNotEmpty)...